XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
分类
反射型:经过后端,不经过数据库 存储型:经过后端,经过数据库
攻击注入点
<
>
。将尖括号转义为<,>
var escapeHtml = function(str){
str = str.replace(/</g,'<');
str = str.replace(/>/g,'>');
return str;
}
var escapeProperty = function(str){
if(!str) return ' ';
str = str.replace(/&/g, '&');
str = str.replace(/"/g,'&quto;');
str = str.replace(/'/g,''');
return str;
}
可将上述两种合为一个方法
var escapeHtml = function(str) {
if(!str) return '';
str = str.replace(/&/g, '&');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
str = str.replace(/"/g, '&quto;');
str = str.replace(/'/g, ''');
// str = str.replace(/ /g, ' ');
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;
};