灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3881回复:0

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

楼主#
更多 发布于:2013-11-19 13:09
 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;
  }

喜欢0 评分0
游客

返回顶部