某种防御XSS攻击方法

之前看了几篇关于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('&lt');
                        break;
                    case '>':
                        copy_str.unshift('&gt');
                        break;
                    default:
                        copy_str.unshift(str[str_length - 1]);
                        break;
                }
                str_length--;
            }
            str = copy_str.join('');
            return str;
        }

经过处理后的字符串再输出到页面,如下

原文地址:https://www.cnblogs.com/duyingxuan/p/6418521.html