2017-05-31 8 views
0
-----------------------------28762240629868 
Content-Disposition: form-data; name="file"; filename="1.jpg" 
Content-Type: text/html 

ÿØÿà 
.... 

誰かが故意にContent-Typeをimage/jpegからtext/htmlに変更した場合、サーバー側でそれを検出する方法はありますか?Content-Typeがサーバーに当たる前に操作されているかどうかをチェックする方法

+0

私はあなたがMIMEタイプをチェックしていると仮定しますか?私は実際にMIMEタイプが簡単に偽装されているとは思わない。 – Akintunde007

答えて

0

クライアントが操作されたコンテンツタイプのファイルを送信する可能性があります。着信添付ファイルが常にイメージになることを期待する場合は、以下の機能を使用して画像の高さと幅を確認してください。それがFALSEを返すならば、それはイメージではありません。

imagesx($img); 

http://php.net/manual/en/function.imagesx.php

imagesy($img); 

http://php.net/manual/en/function.imagesy.php

重要:

安全上の理由から、わからない場合は、WebページのURLから添付ファイルをレンダリングまたは実行しないでください。ちょうど常にイメージを強制的にダウンロードする。ヘッダーを送信して強制的にダウンロードするようにしてください。ユーザーが.EXEファイルをアップロードすることができた場合でも、ブラウザで実行することはできません。

+0

私はすでに画像を確認するためにgetimagesizeを使用している。 Content-Typeを取得する方法はありますか? "text/html"? – Tusar

+0

'exif_imagetype()' PHP関数を使ってcontent-typeを判断することができます。イメージの最初のバイトを読み取り、その署名をチェックします。 –

関連する問題