之前看了几篇关于xss攻击的博客,想到之前做过的项目,内心一片哇凉哇凉,赶紧测试了下,果然有bug。
首先,分析一下;我之前做了一个搜索页面,如果没有搜索到则返回用户的搜索词,这里就存在问题了,我现在来模拟下。
首先正常输入:无符号
这没什么问题。
当我们输入:<h1>无符号</h1>
当然这只是简单的对页面元素的改变,当注入js代码时就存在用户信息暴露的危险
所以说,永远不要相信用户,这种xss攻击则只需要对用户输入进行过滤,将特殊字符转换为转移字符即可,贴下代码:
function parserString(str) {
var str_length = str.length;
var copy_str = [];
if (str_length) {
while (str_length) {
switch (str[str_length - 1]) {
case '<':
copy_str.unshift('<');
break;
case '>':
copy_str.unshift('>');
break;
default:
copy_str.unshift(str[str_length - 1]);
break;
}
str_length--;
}
str = copy_str.join('');
return str;
}
经过处理后的字符串再输出到页面,如下