解决方案 »

  1.   

    转义<、>,非必要不接受引号,带引号的用户输入不输出为html属性,不用eval,尽量不前端解析url参数,sql语句不用字符串拼凑的方式,用数据库sql语法的参数传递方式,
    都注意的话基本不会有什么问题了
      

  2.   

    替换script标签,on事件替换掉,替换掉javascript:关键字<textarea id="ta" rows="6" cols="50">
    <div onclick="alert('1')">a</div>
    <script type="text/javascript">alert(123)</script>
    <a href="javascript:alert(123)"></a>
    <iframe src="javascript:alert(23)"></iframe>
    </textarea>
    <script>
        var s = document.getElementById('ta').value;
        s = s.replace(/<(\/?script)([^>]*)>/gi, '&lt;$1$2&gt;'); //script
        s = s.replace(/<([^>]+)>/g, function ($0) { return $0.replace(/\s*on([a-z\d]+)/ig, ' $1') });  //替掉on
        s = s.replace(/\bjavascript\s*:/gi, '');//javascript:
        document.getElementById('ta').value = s;
       </script>