在Ruby on Rails中阻止XSS的做法是什么?我在网上发现了许多旧文档,大部分时间都是使用 h/html_escape帮助程序来逃避来自用户的任何变量.
我从较新的文档中了解到,在2.0版及更高版本中,有一种 清理方法可以自动清除所谓恶意输入的输入.是否足够或者您是否正在采取更多措施保护您的应用程序?
该h
方法仍然是转义字符串内的所有HTML的方法.您应该在输出内容的任何地方使用此方法.
<%=h @recipe.description %>
这种行为将在Rails 3中发生变化.默认情况下,所有输出都将被转义,您需要明确指定不要转义它.与此同时,如果您经常忘记使用此h
方法,则可能需要查看Safe ERB插件.
所述的sanitize方法是有选择地从内容剔除某些标签的好方法.例如,如果您希望允许用户使用粗体和斜体输出以及添加链接,则可以执行此操作.
<%= sanitize @recipe.description, :tags => %w[b i a], :attributes => %w[href] %>
正如Oliver所提到的,请查看安全指南以获取更多信息.
在Ruby on Rails的安全指南是相当彻底的有关设计的安全为您的网站时,应考虑到Rails的具体问题.