常见系统质量安全性问题相关解决方法

简介: 1. SQL注入文件写入(需要用户验证)解决办法:通过建立过滤器方法,对所有用户输入信息进行清理过滤。通过清理过滤用户输入所包含的危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的Javascript代码、运行各种操作系统命令等。

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>

6. 启用了不安全的 HTTP 方法

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

<!--解决安全性问题:启用不安全HTTP方法 -->
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</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. 不充分帐户封锁

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

16. 不充分帐户封锁

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

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

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

19. HTML 注释敏感信息泄露

解决办法:针对代码注释中出现的敏感信息进行清除;敏感信息包括:注释的源代码、电子邮件、IP地址等;


目录
相关文章
|
1月前
|
存储 监控 安全
服务器维护是确保服务器稳定运行、数据安全和性能优化的重要过程
【10月更文挑战第4天】服务器维护是确保服务器稳定运行、数据安全和性能优化的重要过程
124 65
|
16天前
|
存储 监控 安全
|
2月前
|
存储 监控 安全
在自动化测试环境中,如何确保测试数据的安全性和隐私性
在自动化测试环境中,如何确保测试数据的安全性和隐私性
|
4月前
|
传感器 监控 安全
LabVIEW如何确保自动化设备的稳定性和可靠性?
LabVIEW如何确保自动化设备的稳定性和可靠性?
39 0
|
5月前
|
JSON 测试技术 API
API接口测试指南:确保接口稳定性与可靠性的实践
API接口测试是确保软件产品质量的重要组成部分。通过遵循本指南中的测试步骤和最佳实践,开发者可以有效地验证API的功能、性能和安全性,从而提升软件的整体质量和用户满意度。
|
6月前
|
机器学习/深度学习 人工智能 算法
深入探索软件自动化测试的优化策略
【5月更文挑战第4天】 随着软件开发周期的不断缩短和发布频率的增加,传统的手动测试方法已无法满足快速迭代的需求。因此,本文聚焦于自动化测试流程的优化,旨在提高测试效率和质量。文章首先回顾了自动化测试的基本概念与实施条件,随后分析了当前自动化测试面临的主要挑战,包括维护成本高、测试用例设计复杂等问题。在此基础上,提出了一系列优化策略:持续集成环境下的自动化测试、数据驱动测试、关键字驱动测试、以及基于人工智能的测试用例生成和维护等。通过案例分析和性能评估,验证了这些策略在提升测试覆盖率和减少人工干预方面的有效性。
|
6月前
|
安全 API 数据安全/隐私保护
如何确保无感验证码在不同操作系统上的稳定性和可靠性
确保无感验证码在多操作系统上的稳定与可靠性,需关注适配与测试、数据收集分析、容错处理、安全隐私保护及持续监测改进。开发者应理解各系统特性,进行代码适配和全面测试,确保兼容性;准确收集分析数据,设计容错机制,提升可靠性;同时注重用户数据安全,遵守隐私法规,建立监测机制以持续优化验证码性能。这些措施旨在提供无缝用户体验和安全保障。
|
6月前
|
数据采集 前端开发 JavaScript
前端自动化测试:确保质量和稳定性的关键步骤
前端自动化测试:确保质量和稳定性的关键步骤
前端自动化测试:确保质量和稳定性的关键步骤
|
测试技术 微服务
测试质量保障的影响因素
测试质量保障的影响因素
181 0
测试质量保障的影响因素
|
安全 Java PHP
软件安全性测试(连载15)
软件安全性测试(连载15)
128 0
软件安全性测试(连载15)