51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师论坛测试积点免费获取渠道攻略【长期招募】博为峰网校招聘兼职讲师!横扫BAT,Python全栈测试开发技能大全
【111期】:聊聊想出国找测试工作最核心的那些事!2020不玩虚的,先来一波技术PK! 【征稿】疫情当下手头紧?这波投稿补贴很及时! 自学软件测试那点事
查看: 488|回复: 1

解决数据标准及质量AppScan(测试)安全性问题相关方法

[复制链接]

该用户从未签到

发表于 2019-2-22 10:35:50 | 显示全部楼层 |阅读模式

. 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. 会话未更新

解决办法:在登录页面加入以下代码

  1. //解决安全性问题,会话未更新
  2. request.getSession().invalidate();//清空session
  3. Cookie[] cookies = request.getCookies();//获取cookie
  4. if(null != cookies &&cookies.length> 0){
  5. for(Cookie cookie : cookies){
  6. cookie.setMaxAge(0);//让cookie过期
  7. }
  8. }
复制代码


3. 跨站点请求伪造

解决办法:在过滤器中增加对请求响应信息来源进行判断过滤;

  1. //解决安全性问题:跨站点请求伪造
  2.    String referer = req.getHeader("Referer");   //REFRESH  
  3.    String serverName = request.getServerName();
  4. if(null != referer&&referer.indexOf(serverName) < 0){            
  5. req.getRequestDispatcher(req.getRequestURI()).forward(req, response);  
  6.    }
复制代码


4. 跨站点脚本编制

解决办法:通过建立过滤器方法,增加对请求响应信息来源进行判断过滤及对所有用户输入信息进行清理过滤。通过清理过滤用户输入所包含的危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的Javascript代码、运行各种操作系统命令等。具体实现可参考结合1.SQL注入文件写入 与3.跨站点请求伪造 的解决方法;


5. 已解密的登录请求

解决办法:

1.对用户所输入的密码在页面进行MD5加密并反馈至密码输入框。

2. 手动生成SSL安全访问证书;在此不做介绍,相关方法可通过网上查找;

3. 将产品HTTP访问方式改为SSL安全访问方式;在Apache-Tomcat应用服务器的conf文件夹下的server.xml增加以下代码:

  1. <!--设置SSL(Https)安全访问方式;访问端口为:8443 ->
  2. <Connectorport="8443"minSpareThreads="5"maxSpareThreads="75"
  3. enableLookups="true"disableUploadTimeout="true"
  4. acceptCount="100"maxThreads="200"
  5. scheme="https" secure="true"SSLEnabled="true"
  6. ciphers="SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA,
  7. TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
  8. SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
  9. SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"
  10. keystoreFile="keystore/server.keystore"keystorePass="123456"
  11. clientAuth="false"sslProtocol="TLS"/>
复制代码

(注:keystore/server.keystore为证书存储路径;123456为证书密码;)


4. 在产品WEB.XML文件中加上以下代码:

  1. <!--解决安全性问题:已解密登录请求;将改为SSL安全访问方式 -->
  2. <security-constraint>
  3. <web-resource-collection>
  4. <web-resource-name>SSL</web-resource-name>
  5. <url-pattern>/*</url-pattern>
  6. </web-resource-collection>
  7. <user-data-constraint>
  8. <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  9. </user-data-constraint>
  10. </security-constraint>
复制代码

6. 启用了不安全的 HTTP 方法
  1. <!--解决安全性问题:启用不安全HTTP方法 -->
  2. <security-constraint>
  3. <web-resource-collection>
  4. <url-pattern>/*</url-pattern>
  5. <http-method>PUT</http-method>
  6. <http-method>DELETE</http-method>
  7. <http-method>HEAD</http-method>
  8. <http-method>OPTIONS</http-method>
  9. <http-method>TRACE</http-method>
  10. </web-resource-collection>
  11. <auth-constraint></auth-constraint>
  12. </security-constraint>
  13. <login-config>
  14. <auth-method>BASIC</auth-method>
  15. </login-config>
复制代码

7. 会话 cookie 中缺少HttpOnly属性


解决办法:在过滤器中增加对请求响应信息头的设定

//解决用户的cookie可能被盗用的问题,减少跨站脚本攻击

resp.setHeader("Set-Cookie", "name="+newSimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(new Date())+"; Secure; HttpOnly");  


8. 发现 Web 应用程序源代码泄露模式


解决办法:针对代码注释中出现的部分源代码进行清除;


9. 自动填写未对密码字段禁用的 HTML 属性


解决办法:在密码输入框中增加autocomplete="off" 属性


10. 发现内部 IP 泄露模式


解决办法:针对代码中出现的IP地址进行清除;


11. 检测到应用程序测试脚本


解决办法:针对代码中出现的测试脚本文件进行清除;脚本文件主要包括以test.php、test.asp、test.cgi、test.html 等;并对一些包含相关的敏感字符文件名称进行修改;敏感字符包括:test、old等;


12. Unix 文件参数变更


解决办法:通过建立过滤器方法,增加对所有用户输入信息中是否包含“..”(两个点)字符串进行清理过滤。具体实现可参考结合1.SQL注入文件写入的解决方法;


13. Windows 文件参数变更


解决办法:通过建立过滤器方法,增加对所有用户输入信息中是否包含“..”(两个点)字符串进行清理过滤。具体实现可参考结合1.SQL注入文件写入的解决方法;


14. 链接注入(便于跨站请求伪造)


解决办法:通过建立过滤器方法,增加对请求响应信息来源进行判断过滤及对所有用户输入信息进行清理过滤。通过清理过滤用户输入所包含的危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的Javascript代码、运行各种操作系统命令等。具体实现可参考结合1.SQL注入文件写入 与3.跨站点请求伪造 的解决方法;


15. 通过框架钓鱼


解决办法:通过建立过滤器方法,增加对请求响应信息来源进行判断过滤及对所有用户输入信息进行清理过滤。通过清理过滤用户输入所包含的危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的Javascript代码、运行各种操作系统命令等。具体实现可参考结合1.SQL注入文件写入 与3.跨站点请求伪造 的解决方法;


16. 不充分帐户封锁


解决办法:对用户登录错误次数进行限制,并在一定的时间内不请允许再登录;


17. 检测到文件替代版本


解决办法:针对产品中所有开头为“Copy of”、“_”、“.”、“~”和“Old”的文件进行清理;


18. 发现电子邮件地址模式


解决办法:针对代码中出现的电子邮件地址进行清除;


19. HTML 注释敏感信息泄露解决办法:修改web工程中或者服务器web.xml,增加安全配置信息,禁用不必要HTTP方法


回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2020-4-9 17:51 , Processed in 0.064579 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2020 Comsenz Inc.

快速回复 返回顶部 返回列表