1

私はphp.netリンクのドキュメントを読んでいて、次の行にたどり着きました:

$_FILES['ユーザーファイル']['タイプ']

The mime type of the file, if the browser provided this information. An example 
would be "image/gif". This mime type is however NOT checked on the PHP side 
and therefore don't take its value for granted.

では、ファイルが適切な MIME タイプであることを確認して、ユーザーが潜在的に有害なファイルをサーバーにアップロードするのを防ぐにはどうすればよいでしょうか。または、サーバー側で実行されるコードでバグを引き起こします(実際にはjpeg画像ではないファイルでjpegのみの関数を使用しようとする可能性があるため)?

前もって感謝します

4

2 に答える 2

1
    function getMimeType()
        {

                $finfo = new finfo(FILEINFO_MIME);
                $type = $finfo->file($_FILES['field_name']['tmp_name']);//change the field_name
                $mime = substr($type, 0, strpos($type, ';'));
                return $mime;

        }

        function isValidImage()
        {

            $mime = getMimeType();
            if(stristr($mime,'image'))
                return true;
            else 
                return false;

        }
        $res=isValidImage();

これを試してみると、Mimeもチェックされます。

于 2012-10-27T05:38:06.477 に答える
0

を使用finfo_fileして、PHP がファイルを認識しているタイプを調べることができます。しかし、これも当てにできないと思います。ファイル全体をスキャンして完全に有効であることを確認するのではなく、ヒューリスティックを使用していると思います。<html>たとえば、それが のようなもので始まる場合、text/htmlすべてが正しいことを確認するために全体を解析するわけではありません。

于 2012-10-27T05:27:15.790 に答える