我制作了一个 javascript 函数,它接受一个输入并将其转义,返回一个带有文本的 div 字符串作为示例。这个转义函数是否容易受到 XSS 攻击,如果是,问题是什么?
function escape(s) {
s = s.toString()
if (s.length > 100) { throw new Error("Too long!") }
s = s.replace(/./g, function(x) {
return { '<': '<', '>': '>', '&': '&'}[x] || x;
});
if (s.match("prompt") || s.match("alert")) { throw new Error("XSS caught") }
return "<div>"+s+"</div>"
}
没有错误,我只想知道我的函数是否存在漏洞
我可以确定一些问题。您应该尝试阻止其他字符,例如双引号、单引号和反引号。检查字符串长度是一种很好的做法,但您仍然可以制作长度较短的恶意代码。最后,您正在检查他们是否使用“提示”或“警报”。可以混淆代码来传递这个。