查看: 1370|回复: 25

快速对字符转义,避免跨站攻击XSS

[复制链接]
发表于 2013-11-28 10:49:27 | 显示全部楼层 |阅读模式
XSS已经成为非常流行的网站攻击方式,为了安全起见,尽量避免用户的输入。可是有些情况下不仅不避免,反而要求鼓励输入,比如写博客。博客园开放性很高,可以运行手写的JS。之前比较著名的例子就是,凡是看到某一篇文章的,都自动关注他。

    如果避免跨站攻击的话,我们就得对用户的输入,进行转义。例如<script type='text/javascript'>alert('hello world')</script>。如果直接保存这个字符串的话,然后再输出的话,就会运行JS了。我们需要将这个字符串转义成"<script type='text/javascript'>alert('hello world')</script>"。

    转义,就是一个个字符的匹配,然后转换。看着不难,但是需要转义的字符也不少。另外当字符数量大的时候,效率成为一个问题。下面我写一个函数,让浏览器底层帮我们做到。




function stringEncode(str){
       var div=document.createElement('div');
       if(div.innerText){
           div.innerText=str;
       }else{
           div.textContent=str;//Support firefox
       }
       return div.innerHTML;
  }

发表于 2013-11-29 12:53:43 | 显示全部楼层
顶你一下,好贴要顶!  
发表于 2013-12-1 23:33:23 | 显示全部楼层
支持你就顶你  
发表于 2013-12-6 08:04:16 | 显示全部楼层
感謝樓主  
发表于 2013-12-7 21:40:39 | 显示全部楼层
拿分走人呵呵,楼下继续!
发表于 2013-12-9 08:29:38 | 显示全部楼层
好帖子,要顶!
发表于 2013-12-10 10:04:05 | 显示全部楼层
写得好啊 估计有马甲  
发表于 2013-12-12 02:24:36 | 显示全部楼层
人气还要再提高  
发表于 2014-10-16 11:33:39 | 显示全部楼层
厉害!强~~~~没的说了!  
发表于 2015-2-27 21:44:00 | 显示全部楼层
支持你加分  
高级模式
B Color Image Link Quote Code Smilies

本版积分规则