针对Fortify工具扫描出几大漏洞的解决办法总结

         Fortify是一款能扫描分析代码漏洞的强大工具,这里就不详细介绍,有兴趣了解的同学可以自己找些相关资料来看看。

本人在实际工作中遇到以下漏洞,结合他人经验及自己的理解总结出一些相关解决方式,如有不足之处还望批评指正。

1.System Information Leak

系统信息泄露:当系统数据或调试信息通过输出流或者日志功能流出程序时,就会发生信息泄漏。

看下面两段代码:


 
 
  1. </pre><pre name= "code" class= "java"> out.println( "("+exception.getMessage()+ ")");
  2. print.write(errorMessage);

根据选定屏幕的配置,此信息可转储到屏幕,也可以直接发送到打印机。在某些情况下,版本信息正好可以准确地告诉攻击者入侵此系统的可能性有多大。同样,错误消息也可以告诉攻击者入侵此系统的可能性究竟有多大。例如,一个数据库错误消息可以揭示应用程序容易受到 SQL Injection 攻击。其他的错误消息可以揭示有关该系统的更多间接线索。

解决方法:以上是Fortify的解释,个人认为如果没必要输出或是记入日志的系统信心就简单print.write("系统出错");就行了,当然如果这样做了系统真的出错对维护来说确实是个困难。


2.Cross-site Scripting:Persistent

基于存储的跨站脚本攻击(XSS): 传送到 Web 浏览器的恶意内容通常采用 JavaScript 代码片段的形式,但也可能会包含一些 HTML、Flash 或者其他任意一种可以被浏览器执行的代码。基于 XSS 的攻击手段花样百出,几乎是无穷无尽的,但通常它们都会包含传输给攻击者的私人数据(如 Cookie 或者其他会话信息)。在攻击者的控制下,指引受害者进入恶意的网络内容;或者利用易受攻击的站点,对用户的机器进行其他恶意操作。

解决方法:其实这个xss攻击还是很好解决的,对web安全业务熟悉的同学可能知道ESAPI这个工具。

ESAPI是一个免费、开源的Web应用程序安全控制组件,可以帮助编程人员开发低风险应用程序。
ESAPI是OWASP组织的一个开源项目,网址是: http://www.owasp.org/index.php/ESAPI

ESAPI很适合一个新的开发项目的安全组件,各版本的ESAPI包含如下基本设计:
具有一个安全接口集;
对每一种安全控制有一种参考实现;
对每一种安全控制可以有你自己的实现方法。
很多著名的大公司开始将ESAPI作为自己保障Web应用程序安全的手段,包括美国运通公司,Apache基金会,世界银行等。

大家可以下载它的源码了解一下,其中有一个方法可以很简单的解决 这个基于存储的跨站脚本攻击,代码如下:

String newStr=ESAPI.encoder().encoderForHTML(str);
 
 


 
 
3.Insecure Randomness

不安全的随机数:电脑是一种具有确定性的机器,因此不可能产生真正的随机性。伪随机数生成器 (PRNG) 近似于随机算法,始于一个能计算后续数值的种子。
PRNG 包括两种类型:统计学的 PRNG 和密码学的 PRNG。统计学的 PRNG 可提供有用的统计资料,但其输出结果很容易预测,因此数据流容易复制。若安全性取决于生成数值的不可预测性,则此类型不适用。密码学的 PRNG 通过可产生较难预测的输出结果来应对这一问题。为了使加密数值更为安全,必须使攻击者根本无法、或极不可能将它与真实的随机数加以区分。通常情况下,如果并未声明 PRNG 算法带有加密保护,那么它有可能就是一个统计学的 PRNG,不应在对安全性要求较高的环境中使用,其中随着它的使用可能会导致严重的漏洞(如易于猜测的密码、可预测的加密密钥、会话劫持攻击和 DNS 欺骗)。

解决方法:ESAPI的确是个不错的工具,使用它提供的方法可以规避该漏洞,代码很简单:

var random=ESAPI.randomizer().getRandomInteger(0,100);
 
 
这里简单解释下,参数0和100可以随意设置,意思是生成0到100之间的随机数,如果你想随机数被预测到概率更低,不妨将两个参数的差值设置足够大。
 
 


结尾:其实解决Fortify工具提供的扫描出的漏洞是一件很头疼的事,程序有时候你根本无法猜测它在想什么,常常我认为某种方法可以解决漏洞,但是Fortify并不认可。因此每一种漏洞的规避方法都是背后无数次实验的结果,让人抓狂,但是没办法,工作还得继续......


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值