我刚刚开始使用brakeman gem来探索我的rails应用程序的安全漏洞。
除了几个跨站点脚本警告之外,我设法让一切都变得整洁。
这些都有以下共同点:
e.g
<%= link_to "Click" , :class=> @model.association.attribute, :alt=> @model.association.attribute, :title=> @model.association.attribute, @model.association %>
其中
@model = @commentable = Model.includes(:association1, association2: {:nested-association1, :nested-association2}).find(params[:id])
这是我需要关注/采取行动吗?我认为Rails 3.2默认会逃脱这些。
我欢迎建议,以帮助我更好地理解这个问题,并确定我应采取的步骤,如果有的话。
答案 0 :(得分:4)
我无法从您提供的代码中重现任何警告。您使用的是什么版本的Brakeman?什么是实际警告(必要时编辑)?
我怀疑您收到警告,因为在链接的href值中检测到用户输入。有关可能导致此危险的详细信息,请参阅this pull request。
不幸的是,如果没有更多信息,我无法判断这是否是需要修复的误报或合法警告。
修改:
好的,现在我在使用@model = @commentable = ...
进行测试时看到了警告这是Brakeman如何处理作业的问题。
如果要链接到模型的实例,则应该没有警告。如果要链接到模型属性,则将其计为用户输入。
是的,Rails会转义HTML,但它不会处理以javascript:
开头的data:
或{{1}}的链接{/ 3}}。