转义不带引号的属性

时间:2015-11-19 05:02:16

标签: javascript security xss

使用引用属性,我已经知道了解决方案。

function encodeForHTML(str){
    return str
        .replace(/&/g, '&')
        .replace(/"/g, '"')
        .replace(/'/g, ''')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/\//g, '&#x2F;');
}

如果没有引用一个?必须在这6个字符旁边转义哪些字符?我怎样才能在JS中实现它?

1 个答案:

答案 0 :(得分:1)

根据the W3 HTML spec,不带引号的属性值中不允许的字符是“”“,”“”,“=”,“&gt;”,“&lt;”或“`”以及文字空间字符。(哦,属性值也不能是空字符串。)

我认为你已经拥有的唯一补充是等号,反引号和空格。请注意,您也可以从列表中删除正斜杠(“/”);它不需要编码。