被注入js脚本的xss的解决方法

acelan的解决方法

// acelan fix xss
// 20170110 假红包注入事件
function encodeHTML(source) {
    return String(source)
        .replace(/&/g, '&')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/"/g, "&quot;")
        .replace(/'/g, "&#39;");
}

自己的解决方法
 stripTag: function (params) {
                return document.createElement('del').appendChild(document.createTextNode(params)).parentNode.innerHTML;
            },

            // by acelan,紧急过滤掉黑名单中的标签,不严谨的做法,作为富文本应该使用白名单方式
// 当前过滤的标签为script img style link iframe
//
// var blacklist = 'script img style link iframe'.split(' ').join('|');
// var re = new RegExp('<(' + blacklist +')>(.*)<\/(' + blacklist + ')>|<(' + blacklist +') [^/]*/>|<(' + blacklist +') [^>]*>', 'gi');
富文本处理方法
richtext: function(data) {
// by acelan,紧急过滤掉黑名单中的标签,不严谨的做法,作为富文本应该使用白名单方式
// 当前过滤的标签为script img style link iframe
//
// var blacklist = 'script img style link iframe'.split(' ').join('|');
// var re = new RegExp('<(' + blacklist +')>(.*)<\/(' + blacklist + ')>|<(' + blacklist +') [^/]*/>|<(' + blacklist +') [^>]*>', 'gi');

function remove(tn, root) {
    var tmp = Array.prototype.slice.call(root.getElementsByTagName(tn), 0)
    for (var i = 0, len = tmp.length; i < len; i++) {
        tmp[i].parentNode.removeChild(tmp[i])
    }
}

function escape(html) {
    var div = document.createElement('div')
    var blacklist = 'script img style link iframe input button'.split(' ')
    div.innerHTML = html
    for (var i = 0, len = blacklist.length; i < len; i++) {
        remove(blacklist[i], div)
    }
    return div.innerHTML
}

var html = data.content;

try {
    html = escape(html)
} catch (e) {}

var tpl = [
    '<div class="control-content">',
    // 这里不能直接对data.content toLowerCase, 所以上面要加上大写验证
    '<div class="richtext ke-edit" name="content">' + html + '</div>',
    '</div>'
];
return tpl.join("");
            },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值