此文仅记载开发过程中碰到的一些安全漏洞和解决方案
1. HTTP慢速攻击
风险描述?
http请求底层使用的是TCP网络进行会话,如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用低速发送请求,这样就会占用一个HTTP连接会话,如果大量的使用低速方式进行HTTP请求,中间件的连接数量很容易被使用完而导致其他用户无法进行HTTP请求,形成拒绝服务攻击
解决方案
- 在网络层使用带有拒绝服务攻击相关的安全设备(防火墙、抗DDOS、WAF)
- 修改减少中间件的HTTP会话超时时间。
- 更新中间件的版本
- 优化中间件的连接会话数及相关配置
- 限制单个IP在一定时间内的HTTP请求数
- 修改Tomcat 配置文件 server.xml 中的 <Connector … /> 配置中,设置connectiontimeout值,默认为20000ms,修改为8000ms;
<Connector port="8080" protocol="HTTP/1.1"
maxHttpHeaderSize="8192"
maxThreads="100"
minSpareThreads="50"
maxSpareThreads="100"
minProcessors="50"
maxProcessors="100"
enableLookups="false"
connectionTimeout="8000"
acceptCount="100"
redirectPort="8443" URIEncoding="UTF-8"/>
2.传输层保护不足
风险描述
应用程序时常没有进行身份认证,加密措施,甚至没有保护敏感网络数据的保密性和完整性。而当进行保护时,应用程序有时采用弱算法,使用过期或者无效的证书,或不正确的使用这些技术就会导致传输层保护不足的漏洞
解决方案
- 对所有敏感的页面使用SSL,非SSL请求的页面被重定向到SSL请求的页面。
- 对所有敏感的cookie设置“secure”的属性
- 保证SSL的提供商只支持强大的算法,这样就不会被轻易破解
- 保证您的证书是有效的,不过期,不被撤销,并匹配这个网站所有的域
- 后台和其他连接也应该使用SSL或其他加密技术
- 即使是开发者的注释也应该很好的被保护,防止信息泄露
3.信息泄露
风险描述
信息泄露主要是由于开发人员或运维管理人员的疏忽导致。如未及时删除调试页面,未关闭程序调试功能,未屏蔽程序错误信息,备份文件未删除,数据库备份文件未删除,未屏蔽敏感数据信息等多个方面所导致的不同严重程度的信息泄露。攻击者可通过所掌握的信息进一步分析攻击目标,从而有效发起下一步的有效攻击
解决方案
对于浏览器一个目录或文件的服务器重定向到自定义的404错误页面,或者删除敏感信息