0

次のエラーを表示しているブレーキマン、ファイルはクリップで管理されています。私のコントローラーで

asset_file ||= AssetFile.find(params[:id])

if asset_file
// ファイルをダウンロード
send_file asset_file.uploaded_file.path , :type => asset_file.uploaded_file_content_type
else
flash[:error] = t('document.mind_your_asset_file')
redirect_to root_url
end

ここに画像の説明を入力

4

3 に答える 3

9

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 プロジェクトに報告して、修正できるかどうかを確認することはおそらく役立つでしょう。

于 2014-11-04T07:32:49.263 に答える
1

誤検知の場合、breakman では、 http: //brakemanscanner.org/docs/ignoring_false_positives/ に従ってコマンド「brakeman -I」を使用して、これらの警告を無視できます。

彼らのツールを調べて、警告ごとにいくつかの質問に答えてください。最後にファイルを「config/brakeman.ignore」として保存します。次に「brakeman」を実行すると、無視ファイルが実行されます。

于 2016-09-27T14:13:59.270 に答える