防止XSS攻击的过滤器简单实现

function filter(xss) {
  var whiteList = ['h1', 'h2']; // 白名单
  var translateMap = { '<': '&lt;', '>': '&gt;' };
  return xss.replace(/<\/?(.*?)>/g, function(str, $1, index, origin) {
    console.log($1);
    if (whiteList.indexOf($1) >= 0) {
      return str;
    }
    return str.replace(/[<>]/g, function(str) {
      return translateMap[str];
    });
  });
}
var search = location.search;
var query = search.slice(1);
var params = query.split('&').map(function(str) {
  var list = str.split('=');
  var key = list[0];
  var val = list[1];
  return { key: decodeURIComponent(key), val: decodeURIComponent(val) };
});
console.log(params);
var xss;
params.some(function(item) {
  xss = item.val;
  return true;
});
console.log(xss);
console.log(filter(xss));
document.open();
document.write(xss);
document.write(filter(xss));
document.close();

//eg http://127.0.0.1:8080/?xss=<script>alert(1)</script><h1><h2>1233</h2></h1>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值