不要小看注释掉的JS

by 空虚浪子心 随笔。

HTTP Response Splitting 攻击主要说明的是两个问题

一个是header插入问题。

另一个是\r\n问题。

我们来看这样一段代码:

Java代码
  1. test  
  2. <script>  
  3.     //alert(‘<%=request.getParameter("username")%>’);  
  4. </script>  

大家都能看到,这好像有个漏洞,但是已经被补上了,注释掉了。

那既然注释掉了,就不该有问题了么?

不是的。

 

再看这个URL

http://localhost/index.jsp?username=kxlzx%0d%0a%0d%0aalert(‘kxlzx

很无奈吧?

生成了如下代码:

XML/HTML代码
  1. test  
  2. <script>  
  3.     //alert(‘kxlzx  
  4.   
  5. alert(‘kxlzx ‘);  
  6. </script>  

注释掉的JS,也执行了。

所以,不要把没用的代码,注释掉的JS等,扔到html里。

代码审核是个细活,任何疏漏之处都值得注意。

发表评论?

11 条评论。

  1. test

    ccon

  2. 回kEv

    username=kxlzx*/%0d%0a%0d%0aalert(‘kxlzx’)/*

    关了你。

  3. 之前也有的啊
    就好象在

    别人一样可以通过构造一个 –>来闭合 然后插入其他代码!

  4. 如果没有\r\n,js里的注释//怎么搞?

  5. no.我是说不用换行也可以…

  6. 破牛牛。。。。。。。

  7. 只要一直坚持Escape就行了

    如果你熟悉Django的话,就知道Django会对模板传入参数进行Auto Escape就是为了应付这种攻击手段

  8. 对于行注释,换行
    对于块注释,用*/闭合前面的/*,就行了

  9. username=*/alert(‘lain’);/*

发表评论