-1

Word Excel pdfなどのアップロードファイルを検証するためにファイル拡張子を使用しますか?

ただし、ユーザーがファイル拡張子を変更した場合は、必要なファイルをアップロードできます。

ユーザーがファイル拡張子を変更した後、ファイルをアップロードできないようにした場合に、そのチェックタイプのファイルを機能させたいです。

誰も助けることができます

4

3 に答える 3

1

次の例のように、MIME タイプも確認する必要があります。

$allowedMimes = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'image/bmp', 'image/wbmp');

//getting the mime type (it can be different from the extension) Be careful!
$imgInfo = getimagesize(imagePath);
$type = strtolower($imgInfo['mime']);

//hey dude!! This is a fake image!!
if(!in_array($type, $allowedMimes)){
    //We delete it!!
    unlink(imagePath);
}else{
    //do whatever with the image...
}

MIME タイプの詳細については、こちらを参照してください。

于 2013-02-15T11:47:17.777 に答える
1

安全であるために

タイプに関係なく、すべてのファイルを webroot から移動します。

  • ファイルへの直接アクセスを許可しないでください。ダウンロード機能がある場合は、ローダーを使用してファイルをユーザーに送信してください。
  • ダウンロードを強制する

スクリプト、download.php などを用意し、ファイルの ID を取得し、誰がログインしているかを確認し、すべてがチェックアウトされたら、ファイルを取得し、ブラウザーに読み込んで、適切なダウンロード ヘッダーを送信します。

header('Content-type: application/octet-stream');
header('Content-disposition: attachment; filename=file.ext');
header("Content-Length: " . filesize('../not_in_web_root/file.ext'));
header("Content-Transfer-Encoding:  binary");
readfile('../not_in_web_root/file.ext');
exit;
  • 可能な場合は拡張子と mimetype をチェックして、受け入れたいファイルのみを受け入れます。php の実行を許可したり、ユーザーに直接アクセスさせたりしない限り、php を受け入れても問題ありません。

画像のみを許可する場合は、画像のサイズがある場合は のような関数を使用しますがgetimagesize()、PHP が埋め込まれている可能性があるため、画像への直接アクセスを許可しないでください。

ユーザーにファイルシステム機能を提供する場合は、実際のファイルにアクセスしないデータベース内の値に基づいて、それを仮想機能にします。

于 2013-02-15T11:58:00.037 に答える
0

あなたはおそらくファイルのmimeタイプを見ることができますか?http://us2.php.net/manual/en/fileinfo.constants.php

于 2013-02-15T11:45:16.693 に答える