最近发现公司做的网站的留言板存在很大的漏洞,就是输入HTML代码和Javascript代码都会反映在网页上。看到他们用的都是innerHTML来直接赋值的。
而我想到的做法是将代码过滤一下,输入的特殊字符都会转换成转义字符输出,这样遇到“<”字符是直接输出,像百度的留言就是这样做的。
请问各位大虾分别是怎样做的,哪种办法是最好的?请贴出代码!

解决方案 »

  1.   

    写个方法转换就是了 function transferHTML(html)
    {
     var str ;
     str =  html.replace('<','&lt;');
    //其他同 如> & 等
     return str ;
    }
      

  2.   

    这个最好在服务器端输出时进行转换(html特殊字符转换为字符实体),比如PHP中的htmlspecialchars()函数。
      

  3.   

    asp里面用Server.HTMLEncode之类的转换
      

  4.   

    asp里面用Server.HTMLEncode之类的转换
      

  5.   

    html编码就好了,如果是拼接sql语句的,记得对数据库保留关键字也进行一下编码