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であるため、「example.com/controller/action」のような完全修飾URLではなく、相対的な「/ controller/action」を取得することに注意してください</p>

しかし、あなたの質問に答えるために、それは弱い信頼の警告にもかかわらず、最初の引数が文字列に解決されるどんな形式でも警告します。これは修正されます。

接線アラート。@message.some_urlにredirect_toしたいとします。これにより、信頼性の高い警告が生成されます。これは、次のような方法で修正できます。

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