Brakeman はエラー [0] を報告するのではなく、警告を報告することに注意してください。アプリケーションの潜在的なセキュリティ問題に関する警告を生成します。言い換えれば、それはあなたが人間として実際の問題ではないと判断することについてあなたに警告します. 純粋な静的分析セキュリティ ツールが誤検出をまったく報告しないということは、基本的に不可能です。
あなたは実際に質問をしていないので、この警告が報告された理由や修正方法を知りたいと思っていると思います。どちらもあなたの質問でない場合は、明確にしてください。
BrakemanAssetFile
はモデルであることを認識しています (ディレクトリで定義されているためと考えられますapp/models
)。send_file
ファイルシステムへのアクセスが許可されていることを認識しています。これがsend_file AssetFile.find(params[:id]).uploaded_file.path
モデル属性 (データベースからの値である可能性が高い) を意味すると解釈すると、ユーザーが制御できる可能性があります。File Access
そのため、コードによって攻撃者がサーバー上の任意のファイルにアクセスできる可能性があることを知らせる警告が生成されます。
次の質問は、使用中に Brakeman がこれを報告する理由paperclip
であり、これはおそらく安全であると思います。まあ、ブレーキマンは について何も知らないからpaperclip
です。ただし、これは何度も出てきたので、これが安全かどうかを調べ、この使用法をホワイトリストに登録することについて検討します.
それについて何をすべきかという2番目の質問については、何もする必要はありません。Brakeman の警告をゼロにすることは崇高な目標ですが、常に誤検出が発生します。この特定の警告については、Brakeman 自体を変更せずに、このコードを Brakeman にとってより安全に見せるためにできることは何もありません。
この投稿の意図が実際に偽陽性を報告することである場合は、Brakeman に問題を開くことをお勧めします。
[0] 技術的には、スクリーンショットで確認できる「例外」テーブルに独自のエラーが報告されていると思います。それらを Brakeman プロジェクトに報告して、修正できるかどうかを確認することはおそらく役立つでしょう。