这块 网上挺多,一直没有找到比较好的解决方案,求大神
你需要这个屌屌的XSS过滤模块:http://jsxss.com/zh/index.html
在线演示:http://jsxss.com/zh/try.html
简单使用方法:
在页面中引入文件
http://rawgit.com/leizongmin/js-xss/master/dist/xss.js
filterXSS('任何HTML代码'); // => 将返回经过滤安全无害的HTML代码
另外这个XSS过滤模块支持白名单过滤配置,你可以定制适合自己场景的过滤规则。
用正则过滤“”,把获取的内容做转义处理
个人临时解决办法:个人写的一个正则
return str.replace(/<script/g, "<script").replace(/script>/g, 'script>').replace(/<img/g, "<img").replace(/<script.*>.*<\/script.*>/g, "").replace(/on(error|mousewheel|mouseover|click|load|onload|submit|focus|blur|start)=[^"]*/g, "");
富文本显示,过滤script,过滤onerror
这个有个问题就是js过滤不了了
还是求一个最终解决办法
var chars={
char: function (str, reg) {
return str ? str.replace(reg || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g, function (a, b) {
if (b) {
return a;
} else {
return {
'<':'<',
'&':'&',
'"':'"',
'>':'>',
"'":'''
}[a]
}
}) : '';
},
html:function (str) {
return str ? str.replace(/&((g|l|quo)t|amp|#39);/g, function (m) {
return {
'<':'<',
'&':'&',
'"':'"',
'>':'>',
''':"'"
}[m]
}) : '';
}
};
调用chars.char(“………………”);
还原chars.html(“………………”);