2013-04-11 1 views
5

私は、PHPのセキュリティについて仲間の同僚と面白い議論をしていました。フォームとDOM操作に関するPHPセキュリティ

たとえば、ある人が標準のHTMLフォームで動作するPHPサイトを持っているとします。攻撃者はChromeデベロッパーツールを使用してDOM enctype="multipart/form-data"file inputを追加します。

攻撃者はファイルをアップロードしますが、ウイルスであってもまだその時点で帯域幅/ストレージを使用している場合は実行されない可能性があります。これを行うだけで、ファイルはPHP /tmpディレクトリに入りますか?これは、ユーザーがどんな形式でもファイルをアップロードできるように、あらゆる形を何らかの形にするのではないでしょうか?

10万人がDOMに追加してランダムなギガバイトのファイルをアップロードした場合の規模は?一時的に帯域幅やストレージマークに当たってしまうのではないでしょうか?

+1

アップロードを処理するには、まだサーバー側のコードが必要です。アップロードされていない場合は、アップロードしないでください。 – Marty

+1

それは自動的に '$ _FILES ['name'] ['tmp_name']'に入りますか? – JREAM

+2

**着信**帯域幅のために料金を請求するホスティングプロバイダがある場合は、ブリッジから飛び降りるように教えてください。しかし、はい、ものは自動的に '/ tmp'に保存されますが、時間の経過とともにリサイクルされます。 –

答えて

3

アップロード自体は何が起こったとしても起こります。ファイルはアップロードtempディレクトリに格納され、PHPスクリプトが起動します。スクリプトがアップロードされたファイルを処理しない場合は、スクリプトの実行が終了すると自動的に一時ディレクトリからファイルが削除されます。

最大サイズを超えたときにサーバーが要求を中止するかどうかは、構成の問題です。

+0

ああ!私は最大ファイルサイズのアップロードとタイムアウトについて忘れていました - 私はこれらがこの問題を相殺するセキュリティ対策だと思います! – JREAM

+2

すべてのアップロードPHPスクリプトが1つのディレクトリの下にある場合、.htaccessファイルのLimitRequestBodyを使用してアップロードファイルサイズを制御できます。 Webroorの.htaccessファイルにLimitRequestBody(200 KB)の小さな値を入れ、アップロードPHPスクリプトが存在するディレクトリの下にLimitRequestBodyの値を大きくします – Amit