2016-11-23 17 views
2

xarg.orgのjQuery webcamプラグインを使用しています。このプラグインは、フラッシュアプ​​リケーションのおかげでユーザーのウェブカメラを使用してスナップをとることができます。HTTP_RAW_POST_DATAの入力検証

スナップを撮ると、画像はHTTP_RAW_POST_DATAで画像を保存するためのPHPスクリプトに送られます。著者は、このスクリプトを提案:

<?php 
$str = file_get_contents("php://input"); 
file_put_contents("/tmp/upload.jpg", pack("H*", $str)); 
?> 

私の問題は、私はHTTP_RAW_POST_DATAからデータをテストする方法がわからない、入力検証です。

私は、以前のスクリプトの後、このテストを追加します。

$imageOK=true; 
$imagesize = getimagesize("views/img/order.jpg"); 
if(@is_array($imagesize)){ 
    if($imagesize[mime]!="" && $imagesize[mime]=="image/jpeg"){ 
     $imageOK=true; 
    } 
    else { 
    $imageOK=false; 
    } 
} else { 
    $imageOK=false; 
} 
if(!$imageOK) 
    unlink("views/img/order.jpg"); 

あなたはそれが安全であると思いますか?そうでない場合は、どのようなテストをすることができますか?

おかげ

+0

サイドノート - 私は() '今まであなたが'と沈黙する必要が警告をトリガする 'IS_ARRAYはないと思います@' 。しかし、 'mime'は通知を投げる未定義の定数です。私はあなたのPHP開発ボックスでエラー報告の設定を確認することをお勧めします。 –

答えて

0

あなたは良いとセキュアである、getimagesize()でファイルの種類を確認してください。

しかし、あなたのコードでファイルのサイズの検証は表示されません。

ゴールデンルールは、クライアントからの入力を絶対に信頼しないことです。したがって、サーバー側でファイルのサイズを確認する必要があります。

あなたは、ファイルのアップロードに関するいくつかの良い習慣を与えるOWASPのウェブサイトを、確認することができます:https://www.owasp.org/index.php/Unrestricted_File_Upload