对了对抗XSS,在HtmlEncode中至少要转换以下字符:
& => & < =>< > ” ‘ /
相应地,Javascript的编码方式可以使用JavascriptEncode。
JavascriptEncode与HtmlEncode的编码方法不同,他需要使用对特殊字符进行转义。在对抗CSS时,还要求输出的变量必须在引号内部,以避免造成安全问题。比较下面两种写法:
var x=escapeJavascript($evil);
var y=’”‘+escapeJavascript($evil)+’”‘;
如果escapeJavascript函数只转义了几个危险字符,比如’ ” < > & #等,那么上面的两行代码输出后可能变成:
var x=1;alert(2);
var y=”1;alert(2)”;
所以要求使用JavascriptEncode的变量输出一定要在引号内。