} } }

    由Strurts2漏洞引开谈谈web代码安然题目

    添加时间:2013-7-22 点击量:

        




    漏洞与补丁齐飞,蓝屏共死机一色


    近struts2的安然漏洞影响面甚广,此后门为可以在url中直接长途调用脚本的漏洞和一个重定向漏洞。大师可以在s2-016长途履行脚本漏洞s2-017重定向开放漏洞中看到进击的例子。第一个漏洞即长途履行脚本经由过程机关ProcessBuilder创建过程履行脚本,框架开放度太大,由外界用户输入的字符串可以被当成代码履行。第二个漏洞重定向开放则可被垂钓网站哄骗,外链上捏造成如有名电子商务网站淘宝,京东,比如是<a href=http://www.taobao.com/xxx.action?redirect:http://hacker.com/getyourPassword>打折新款</a>, 用户点击后来到一个垂钓网站来诳骗用户进行获取暗码


         struts2作为一个老牌的web开源框架,尚且存在如此严重的题目,我们作为应用法度的开辟者,也经常会在某些处所因为对框架懂得不深,或推敲的不敷周到,而埋下安然或其他方面的隐患。下面我们就谈谈经常碰着的一些高危地段:



         1.转弯制动失灵(forward之后没有及时return)




       1: String para = req.getParameter(g);


       2:         if (para != null) {


       3:             RequestDispatcher r = req.getRequestDispatcher(/goodbye/ww);


       4:             r.forward(req, res);            


       5:         }


       6:  


       7:         System.out.println(still in here.Logic continue.);



         这段代码在forward之后,Response就已经发送给客户端,看起来后面的代码就没履行了,其实不是的。forward之后,只是收集交互已经完成,这时若是调用一个新的r.forward会掷出java.lang.IllegalStateException: Cannot forward after response has been committed 异常,而后续代码照样履行。若是此时调用了一个后台办事,如标识表记标帜数据库或其他资料操纵,就会造成严重的逻辑错误。


    解决规划:在forward之后不须要履行其它后台逻辑时,请及时return.(手制动



    2.注入进击(用户提交的字符串作为代码的一项目组并可履行)



        此类题目在论坛、博客等用户可输入html文本的网站中碰着的斗劲多。用户输入一段文字,这段文字须要以网页情势显现出来(作为html履行或作为js履行)或者须要生成一个后台脚本(如sql,shell等),这时用户可恶意的输入脚本并在厥后的履行景象中履行,达到把握或破损体系的目标。


    根蒂根基解决思路:


    将这段代码脚本进行处理惩罚,比如将此中有较大风险的字符进行转义处理惩罚,使其在履行景象中只有显现功能,而无履行功能。(限行




    • 对于html,javascript只需将其进行html转义即可。(推敲到显现结果的题目,好的办法是创建标签白,只有在白中的标签才可以显现,不然就转义或剔除)。




    • 标签说话中的变量生成的html,可以对其进行标签定制,供给转义属性,形如<c:out value=¥{html} escapeXml=true /> 情势。

    • 对于SQL尽量应用Preparestatement来生成sql,罕用拼接体式格式;若是要用拼接,则重视用户输入的内容此中字符的转义。



    3.十字路口(servlet的全局变量线程安然题目)



        Servlet本身设计时刻允很多线程接见,供给web办事给客户端。此中容器中Servlet中的实例变量一般来说是只有一个的(跟从servlet只初始化一个这个特点),那若是有对此实例并发写的景象,很轻易造成写丧失等同步题目。然则进行同步加锁过多,又会造成机能降落等题目。在一般景象下尽量罕用实例变量来保持状况。如若要用,也尽量应用线程安然且机能高的容器,如ConcurrentHashMap,而要避免应用线程不安然的如HashMap(可能造成死轮回),ArrayList,LinkedList等。





     

    我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
    分享到: