为了XSS攻击,我的项目下面的代码删除了不安全的字符:
userInput
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
当用户发布指向我网站的链接时,如果没有&
,则会很好,但如果有&
,则会对其进行编码。< / p>
例如:
http://foo.com/bar?a=b&c=d
将成为
http://foo.com/bar?a=b&c=d
使链接断开。
如果我不编码&
,那就没问题了。但是这会导致安全问题吗?如果是,那么适当的解决方案是什么?
答案 0 :(得分:0)
使用encodeURIComponent(userInput);
答案 1 :(得分:0)
我知道为什么我现在开始投票... &
与&
相同,感谢@Bergi。
该错误发生在其他地方,它被编码为&&
两次并打破了链接。