Rails:在使用 link_to 并将模型属性赋予 href 时防止 XSS

Rails: Prevent XSS when using link_to with model attribute given to href

考虑以下 link_to 示例:

link_to "Personal Website", @user.website

如何保护它免受 XSS 攻击。 用户 table 在外部数据库中,所以我无法信任它。我尝试了使用 sanitize 和 h 的不同方法,但是当我在我的本地数据库用户网站中替换为 javascript:alert('XSS') 时,当我单击 link.[=14= 时,javascript 仍在执行]

提前致谢,

您可以在控制器中删除 "javascript:"。这很丑陋但有效,但有一些警告(浏览器在它们可以接受的 "javascript:" 方面确实很棒)。这不是一个很强的控制。

您可以将 "http://"(或 "https://")静态添加到 link href,并将其从您的用户输入中删除。由于 "javascript:" 只有在 href 的第一个字符处才有效,因此静态添加 http:// 作为开头可以缓解 XSS。

您还可以使用 Content-Security-Policy header 来防止内联 Javascript 变为 运行。这会影响您如何构建代码,并且并非所有浏览器都支持它,但是当它 受支持时,它是一个很好的控件。

一如既往,实施多层防御(以上多层)将使您的应用程序更加健壮和安全以抵御攻击。