0

我最近将 Brakeman gem 添加到我的 Gemfile 中,并且必须看到,我应该使用

:only_path => true

使其更安全。但我正在使用嵌套资源并且不知道具体如何,这是我的控制器中的部分。

if @comment.update_attributes(params[:comment])
  redirect_to [@message, @comment], notice: 'Comment was successfully updated.'   

我该怎么做,我只看到了 url_for 助手的 only_path 属性。感谢您的帮助!

4

1 回答 1

2

简短的回答是,无论如何,在这种情况下,刹车手都会抱怨。有一个修复程序(https://github.com/presidentbeef/brakeman/issues/143)。

照原样,您的代码是安全的。第一个参数传递给 url_for,在这种情况下,它会根据您的模型构建多态路由。

请注意,默认情况下 :only_path 为 true,因此您将获得相对的“/controller/action”,而不是像“example.com/controller/action”这样的完全限定 URL</p>

但是要回答您的问题,它会在第一个参数解析为字符串的任何形式上发出警告,尽管是弱置信度警告。这将得到修复。

切线警报。假设您要重定向到@message.some_url。这将生成一个高置信度警告,您可以通过以下方式修复它:

redirect_to URI.parse(url_for(@message.some_url)).path, notice: 'Comment was successfully updated'
于 2012-09-07T17:29:49.293 回答