XSS已经成为很是流行的网站攻击方式,为了安全起见,尽可能避免用户的输入。但是有些状况下不只不避免,反而要求鼓励输入,好比写博客。博客园开放性很高,能够运行手写的JS。以前比较著名的例子就是,凡是看到某一篇文章的,都自动关注他。 javascript
若是避免跨站攻击的话,咱们就得对用户的输入,进行转义。例如<script type='text/javascript'>alert('hello world')</script>。若是直接保存这个字符串的话,而后再输出的话,就会运行JS了。咱们须要将这个字符串转义成"<script type='text/javascript'>alert('hello world')</script>"。 java
转义,就是一个个字符的匹配,而后转换。看着不难,可是须要转义的字符也很多。另外当字符数量大的时候,效率成为一个问题。下面我写一个函数,让浏览器底层帮咱们作到。浏览器
function stringEncode(str){ var div=document.createElement('div'); if(div.innerText){ div.innerText=str; }else{ div.textContent=str;//Support firefox } return div.innerHTML; }