v-html 会出现XSS 攻击,如何防止XSS攻击

2,856 阅读1分钟

一、什么是XSS攻击(粘贴百度的)

XSS 攻击 : XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序;

二、解决方案

  1. 优雅的解决:将用户输入的进行编码,将< 、"、&、> 等特殊字符进行转义,让浏览器当成字符串显示。

     // artTemplete 中进行XSS 防御转义方式。
     var escapeMap = {
            "<": "&#60;",
            ">": "&#62;",
            '"': "&#34;",
            "'": "&#39;",
            "&": "&#38;"
        };
      var escapeFn = function (s) {
            return escapeMap[s];
        };
        
      var escapeHTML = function (content) {
            return toString(content)
            .replace(/&(?![\w#]+;)|[<>"']/g, escapeFn);
        };
    
  2. 暴力的解决: 通过innerText/textContent 的只能设置文本的特殊性。

    function(value){
            if(typeof value !== 'string'){
                return value;
            }
            var str = value || '',
                temp = document.createElement ("div"),
                obj;
            (temp.textContent != undefined ) ? (temp.textContent = str) : (temp.innerText = str);
            obj = temp.innerHTML;
            temp = null;
            return obj;
        }
    
  3. 第三方插件 github.com/leizongmin/…