xss防御

2017-06-26  本文已影响106人  听城

XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

xss攻击分类

分类

反射型:经过后端,不经过数据库
存储型:经过后端,经过数据库

xss攻击注入点

攻击注入点

xss攻击防御

var escapeHtml = function(str){
      str = str.replace(/</g,'&lt;');
      str = str.replace(/>/g,'&gt;');
      return str;
}
var escapeProperty = function(str){
      if(!str) return ' ';
      str = str.replace(/&/g, '&amp;');
      str = str.replace(/"/g,'&quto;');
      str = str.replace(/'/g,'&#39;');
      return str;
}

可将上述两种合为一个方法

var escapeHtml = function(str) {
    if(!str) return '';
    str = str.replace(/&/g, '&amp;');
    str = str.replace(/</g, '&lt;');
    str = str.replace(/>/g, '&gt;');
    str = str.replace(/"/g, '&quto;');
    str = str.replace(/'/g, '&#39;');
    // str = str.replace(/ /g, '&#32;');
    return str;
};
var escapeForJs = function(str) {
    if(!str) return '';
    str = str.replace(/\\/g, '\\\\');
    str = str.replace(/"/g, '\\"');
    return str;
};
JSON.stringify(str)//建议使用这种方法
var xssFilter = function(html){
    if(!html) return '';
    var xss = require('xss');
    var ret = xss(html, {
        whiteList:{
            img: ['src'],
            a: ['href'],
            font: ['size', 'color']
        },
        onIgnoreTag: function(){
            return '';
        }
    });
    console.log(html, ret);
    return ret;
};
上一篇下一篇

猜你喜欢

热点阅读