如何允许用户输入'&'安全?

时间:2015-08-18 18:23:59

标签: javascript html security xss

为了XSS攻击,我的项目下面的代码删除了不安全的字符:

userInput       
    .replace(/&/g, "&")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;")
    .replace(/'/g, "&#039;");

当用户发布指向我网站的链接时,如果没有&,则会很好,但如果有&,则会对其进行编码。< / p>

例如:

http://foo.com/bar?a=b&c=d

将成为

http://foo.com/bar?a=b&amp;c=d

使链接断开。

如果我不编码&,那就没问题了。但是这会导致安全问题吗?如果是,那么适当的解决方案是什么?

2 个答案:

答案 0 :(得分:0)

使用encodeURIComponent(userInput);

答案 1 :(得分:0)

我知道为什么我现在开始投票... &amp;&相同,感谢@Bergi。 该错误发生在其他地方,它被编码为&amp;&amp;两次并打破了链接。