清理URL以防止Rails中的XSS

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

如何清理url以防止XSS链接?

提前致谢,

XSS的一个例子,这是rails的sanitize方法无法阻止的

@url = "javascript:alert('XSS')" <a href="https://stackoverflow.com/questions/9634868/sanitizing-url-to-prevent-xss-in-rails/">test link 

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

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

这给了我:

 xss link 

您可以使用Rails的清理方法进行一些基本限制。

或者你可以使用rgrove的sanitize gem来获得更多选择。

希望这可以帮助。

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

 <%= sanitize "Things" %> 

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

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

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

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