清理URL以防止Rails中的XSS

时间:2012-03-09 13:31:45

标签: ruby-on-rails ruby xss

在rails应用程序中,用户可以创建事件并发布URL以链接到外部事件站点。

如何清理网址以阻止XSS链接?

提前致谢,

XSS的示例,这是rails的清理方法

无法阻止的
@url = "javascript:alert('XSS')"
<a href="<%=sanitize @url%>">test link</a>

4 个答案:

答案 0 :(得分:5)

一旦href已经在以下标签中,请尝试清理:

url = "javascript:alert('XSS')"
sanitize link_to('xss link', url)

这给了我:

<a>xss link</a>

答案 1 :(得分:2)

您可以使用Rails'sanitize方法进行一些基本限制。

或者您可以使用rgrove的sanitize gem获取更多选项。

希望这有帮助。

答案 2 :(得分:1)

sanitize适用于html字符串,而不是网址。这意味着,您无法清理URL本身,但您可以清理一段带有恶意URL链接的html。例如

<%= sanitize "<a href='#{@url}'>Things</a>" %>

这将清除所有已知恶意属性的链接

答案 3 :(得分:-2)

自3.2.13,3.1.12,2.3.18以来,此漏洞已得到修复。

以下链接还提供了可在早期版本中使用的补丁。

https://groups.google.com/forum/#!msg/rubyonrails-security/zAAU7vGTPvI/1vZDWXqBuXgJ