web-dev-qa-db-ja.com

実行可能ファイルのアップロードを安全に許可する方法

ファイルのアップロードについてサポートが必要です。私のプロジェクトの1つで、クライアントはファイルタイプの制限なしにファイルのアップロードを許可したいと考えています。しかし、ユーザーは.php、.aspx、.dll、.soなどの実行可能ファイルをアップロードでき、「リモートコード実行」または「スクリプト攻撃」を簡単に実行できると思います。

この問題を解決するには?

8
Ravi

この種の問題の最も一般的な解決策は、保存されているファイルにWebサーバーからアクセスできないようにすることです。

これを行う簡単な方法の1つは、ファイルをデータベースに保存し、ディスクに保存しないことです。ただし、何らかのXSSを作成しないように注意する必要があります。ファイルを直接リンクしたり、理想的にはダウンロードしたりしないでください。 Webインターフェースを介してファイルを使用可能にする必要がある場合は、「添付ファイル」のcontent-dispositionヘッダーを使用して、ブラウザーがファイルを解釈しないようにします。

20
Stephane

適切なURLルーティングを含む健全なフレームワークを使用します。 WebサーバーがURLに応じて実行可能ファイルにリクエストを送信する代わりに、allリクエストをフレームワークのエントリポイントにリダイレクトし、通常はコントローラーマッピングへのルートに基づいてリクエストを処理します。

つまり、アップロードされたファイルは実行する方法がないため安全です。

2
André Borie

Stepheneが述べたように、それを特別なデータベースまたは非excの環境に保存します。承認されたユーザーのみがファイルをアップロードする必要がある場合は、それらの制限を適用し、キャプチャを追加してボットを回避できます。

0