清理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