Cuuube / blog

blog on Mirror
1 stars 0 forks source link

[html]对html的防xss转义 #25

Open Cuuube opened 7 years ago

Cuuube commented 7 years ago

思想

主要是为了防止不法黑客通过特殊字符插入代码片段,使后台或者前台无意间执行黑客代码,从而造成损失。 html上一些敏感符号还是请务必转码一下。如“<”、“>”、“&”、“ ' ”和“ " ”。

放代码

这里呈上在下不成熟的代码:

let escapeHTML = function (html, isUnescape){
    let str = html;
    //要添加转义的写在这里,&必须在第一位
    let escapeList = {
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;',
        '"': '&quot;',
        "'": "&apos;",
        ' ': '&nbsp',
    }
    function _replaceAll(string, oldChar, newChar) {
        let re = new RegExp(oldChar, 'g');
        return string.replace(re, newChar);
    }
    function _escapeHTML() {
        for (let i in escapeList) {
            str = _replaceAll(str, i, escapeList[i]);
        }
        return str;
    }

    function _unescapeHTML() {
        for (let i in escapeList) {
            str = _replaceAll(str, escapeList[i], i);
        }
        return str;
    }
    if (!!isUnescape) {
        return _unescapeHTML();
    } else {
        return _escapeHTML();
    }
}

module.exports = escapeHTML;