ファイル接尾辞と MIME タイプ検出を使用する
通常、ファイル タイプを厳密に制限したい場合は、単純に $_FILES['myFile']['type'] を使用してファイルの MIME タイプを取得できます。ファイルを調べて、それが正当なタイプであるかどうかを検出します。
あるいは、ファイル名の最後の数文字を取得してファイル接尾辞を取得することもできますが、残念ながら、これらの方法では十分ではなく、ファイルの拡張子を簡単に変更してこの制限を回避できます。さらに、MIME タイプ情報はブラウザによって送信され、すべてではないにしても、ほとんどのブラウザはファイル拡張子に基づいて MIME タイプ情報を提供します。したがって、拡張子と同様に、MIME タイプは簡単に偽装される可能性があります。
「マジック バイト」の使用
ファイルの種類を判断する最良の方法は、「マジック バイト」として知られるファイルの最初の数バイトを調べることです。マジック バイトは基本的に、ファイル ヘッダーまたはファイルの末尾にある 2 ~ 40 バイトのさまざまな長さの署名です。ファイルの種類は何百もあり、そのうちのかなりの数のファイルには、複数のファイル署名が関連付けられています。ここでファイル署名のリストが表示されます。
怠惰な方法は、PHP 5.3.0 ではデフォルトで有効になっている fileinfo 拡張子を使用することです (公式マニュアルによる)。有効になっていない場合は、自分で有効にすることができます。
たとえば、Windows の場合。 :
コードをコピーします コードは次のとおりです:
extension=php_fileinfo.dll
Linux の場合:
コードをコピーします コードは次のとおりです:
extension=fileinfo.so
#正しく動作しない場合は、次の行を追加してください。
#mime_magic .magicfile=/usr/share/file/magic
Windows で正しく動作しない場合:
以下を参照してください: http://www.php.net/manual/en/ fileinfo.installation.php#82570
file-5.03-bin.zip をダウンロードして解凍します。magic.mgc と 2 つのファイルがあります。共有ディレクトリのマジック。
次に、マジック ファイルを指す MAGIC という名前のシステム環境変数を追加します。 D:softwarePHPextrasmiscmagic など
コードをコピー コードは次のとおりです。
function getFileMimeType($file) {
$buffer = file_get_contents ($file);
$finfo = new finfo(FILEINFO_MIME_TYPE);
return $finfo->buffer($buffer);
$mime_type = getFileMimeType($file); 🎜 >switch($mime_type) {
case "image/jpeg":
// ここにアクションが入ります...
}
画像のアップロードを処理します
画像のアップロードのみを許可する場合は、組み込みの getimagesize() 関数を使用して、ユーザーが実際に有効な画像ファイルをアップロードしていることを確認できます。ファイルが有効な画像ファイルでない場合、この関数は false を返します。
コードをコピー
コードは次のとおりです: // ファイル入力フィールドの name 属性が myfile $tempFile = $ _FILES['myFile']['tmp_name']; // アップロード中に PHP によって作成された一時ファイルのパス
$imginfo_array = getimagesize($tempFile) // そうでない場合は false を返します。有効な画像ファイル if ($imginfo_array !== false) {
$mime_type = $imginfo_array['mime'];
switch($mime_type) {
case "image/jpeg":
// あなたのアクションはここにあります...
}
}
else {
echo "これは有効な画像ファイルではありません"
}
「マジック バイト」のフェッチと解釈を手動で読み取る
しかし、これは不可能ではありません。数年前、実際の mp3 ファイルのみをアップロードできるスクリプト ファイルを作成するように依頼されました。当時は Fileinfo を使用できなかったので、それに頼るしかありませんでした。この手動検出方法について 一部の mp3 ファイルの不正なマジック バイトを解析するのに時間がかかりましたが、すぐに安定したアップロード スクリプトを入手できました。 この記事を終える前に、警告しておきます。アップロードされたファイルを含めるために include() を決して呼び出さないようにしてください。PHP コードが画像内に巧妙に隠されている可能性があり、画像もファイル検出により、このようなスクリプトが実行されると、システムに損傷を与えるだけです。
翻訳元: http://designshack.co.uk/articles/php-articles/smart-file-type-detection-using-php/

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









