1. SQL注入文件写入(需要用户验证) 解决办法:通过建立过滤器方法,对所有用户输入信息进行清理过滤。通过清理过滤用户输入所包含的危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的Javascript代码、运行各种操作系统命令等。 建议过滤出所有以下字符: [1] |(竖线符号) [2] &(&符号) [3];(分号) [4] $(美元符号) [5] %(百分比符号) [6] @(at 符号) [7] '(单引号) [8] "(引号) [9] '(反斜杠转义单引号) [10] "(反斜杠转义引号) [11] <>(尖括号) [12] ()(括号) [13] +(加号) [14] CR(回车符,ASCII 0x0d) [15] LF(换行,ASCII 0x0a) [16] ,(逗号) [17] (反斜杠) 注意Rational AppScan Standard一旦开启,将始终会报告此问题。所以此问题是需要用户验证。具体可参考http://www-01.ibm.com/support/docview.wss?uid=swg21472385 2.会话未更新 解决办法:在登录页面加入以下代码 //解决安全性问题,会话未更新 request.getSession().invalidate();//清空session Cookie[] cookies = request.getCookies();//获取cookie if(null != cookies &&cookies.length> 0){ for(Cookie cookie : cookies){ cookie.setMaxAge(0);//让cookie过期 } } 3. 跨站点请求伪造 解决办法:在过滤器中增加对请求响应信息来源进行判断过滤; //解决安全性问题:跨站点请求伪造 String referer = req.getHeader("Referer"); //REFRESH String serverName = request.getServerName(); if(null != referer&&referer.indexOf(serverName) < 0){ req.getRequestDispatcher(req.getRequestURI()).forward(req, response); } 4.跨站点脚本编制 解决办法:通过建立过滤器方法,增加对请求响应信息来源进行判断过滤及对所有用户输入信息进行清理过滤。通过清理过滤用户输入所包含的危险字符,便可能防 止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的Javascript代码、运行各种操作系统命令等。具体实现可参考结合1.SQL注入文件写入 与3.跨站点请求伪造 的解决方法; 5.已解密的登录请求 解决办法: 1).对用户所输入的密码在页面进行MD5加密并反馈至密码输入框。 2). 手动生成SSL安全访问证书;在此不做介绍,相关方法可通过网上查找; 3). 将产品HTTP访问方式改为SSL安全访问方式;在Apache-Tomcat应用服务器的conf文件夹下的server.xml增加以下代码: <!--设置SSL(Https)安全访问方式;访问端口为:8443 -> <Connectorport="8443"minSpareThreads="5"maxSpareThreads="75" enableLookups="true"disableUploadTimeout="true" acceptCount="100"maxThreads="200" scheme="https" secure="true"SSLEnabled="true" ciphers="SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" keystoreFile="keystore/server.keystore"keystorePass="123456" clientAuth="false"sslProtocol="TLS"/> (注:keystore/server.keystore为证书存储路径;123456为证书密码;) 4). 在产品WEB.XML文件中加上以下代码: <!--解决安全性问题:已解密登录请求;将改为SSL安全访问方式 --> <security-constraint> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>