私はファイルアップロードスクリプトを作成していて、アップロードされたファイルを検証するための最良のテクニックとプラクティスを探しています。
許可される拡張機能は次のとおりです。
$allowed_extensions = array('gif','jpg','png','swf','doc','docx','pdf','zip','rar','rtf','psd');
これが私がしていることのリストです。
ファイル拡張子を確認しています
$path_info = pathinfo($filename); if( !in_array($path_info['extension'], $allowed_extensions) ) { die('File #'.$i.': Incorrent file extension.'); }
ファイルのmimeタイプを確認しています
$allowed_mimes = array('image/jpeg','image/png','image/gif','text/richtext','multipart/x-zip','application/x-shockwave-flash','application/msword','application/pdf','application/x-rar-compressed','image/vnd.adobe.photoshop'); if( !in_array(finfo_file($finfo, $file), $allowed_mimes) ) { die('File #'.$i.': Incorrent mime type.'); }
ファイルサイズを確認しています。
アップロードされたファイルが有効なファイルであることを確認するにはどうすればよいですか?奇妙なことに気づきました。.jpgファイル拡張子を.zipに変更して...アップロードしました。MIMEタイプが正しくないと思いましたが、その後、特定のタイプをチェックしていないことに気付きましたが、特定のMIMEタイプが配列に存在するかどうかを確認しました。後で修正しますが、問題はありません(もちろん、良い解決策やアイデアがあれば、遠慮なく共有してください)。
画像の扱い方(サイズ変更、回転、切り抜きなど)は知っていますが、他の拡張機能を検証する方法がわかりません。
今が私の質問の時間です。
- そのようなファイルを検証するための優れたテクニックを知っていますか?.zip / .rarファイルのアーカイブを解凍する必要があるかもしれませんが、ドキュメント(doc、pdf)はどうですか?
- .psdファイルのローテーション、サイズ変更は機能しますか?
- 基本的に、.psdファイルには次のMIMEが含まれていると思いました:application / octet-stream
表示された.psdファイル(image / vnd.adobe.photoshop)をアップロードしようとしました。私はこれについて少し混乱しています。ファイルは常に同じMIMEタイプを持っていますか?
また、コードブロックを強制的に機能させることはできません。誰かが理由について推測していますか?