アップロードされたファイルの種類を確認するにはどうすればよいですか?
アップロードされたファイルの種類の確認
サフィックス名を確認することは得策ではありません。他の人がこれを使用してトロイの木馬のサフィックス名を .jpg に変更しているのを見たことがあります。次に、侵入の例
では、アップロードされたファイルの正しい種類を確認するより安全な方法はあるのでしょうか?
-----解決策---------
をコピーして貼り付ける最悪の方法は、$_FILES[...]['type'] を介してアップロードされたファイルのタイプを確認することです。ファイル拡張子を変更するだけで偽装できるためです。
もう 1 つの比較的安全な方法は、ファイルの最初の 2 バイトの内容に基づいてアップロードされたファイルのタイプを判断することです。コード例は次のとおりです。
$handle = fopen($ _FILES[.. .]['tmp_name'], 'rb');
$content = fread($handle, 2);
$info = unpack ('c2chars' , $content);
if (emptyempty($info['chars1']) || emptyempty($info['chars2'])) {
exit('エラー!' );
}
if ($info['chars1'] < 0) {
$info['chars1'] += 256;
if ($ info['chars2 '] < 0) {
$info['chars2'] += 256;
$code = $info['chars1'] . chars2'];
PHP の Pack&unpack 関数は非常に優れています。興味がある場合は、pack() と unpack() を使用した PHP でのバイナリ データの処理
を参照してください。注: インターネット上のほとんどの関連検索では、プログラムは 256 関連の操作を実行しません。これは、私自身のテスト データの解釈に基づく TDD の結果です。それが正しいかどうかは、読者が独自に判断する必要があります。 。
スイッチを使用して、ファイル タイプに対応する $code 変数を決定します。一般的な画像タイプの結果は次のようになります:
GIF: 7173
JPG: 255216
PNG: 13780
もちろん、他のファイルタイプも自分で実験して判断することができます。ただし、最初の 2 バイトの内容も偽造される可能性があるため、この方法は必ずしも安全であるとは限りません。そのため、誤って解析されないようにファイル拡張子を制限することをお勧めします。たとえば、foobar ファイルという名前のファイルを作成します。内容は次のとおりです:
GIF89
最初の 2 つの単語セクションを使用する場合ファイル タイプを検出すると、結果は GIF: 7173 になります。シェルで file コマンドを使用して検出した場合でも、GIF 画像と誤認されます:
# file foobar.php
foobar.php: GIF 画像データ 16188 x 26736
拡張子が .php であるため、このファイルは php エンジンによって解析され、ハッカーに Web シェルが与えられ、セキュリティが不可能になります。したがって、ファイル拡張子を制限することが非常に重要です。覚えておいてください。この種の偽装を検出する方法としては、次のシェル コマンドを使用してフィルタリングするのが最も簡単です。
# strings foobar.php | grep -i "
このような危険を完全に防ぎたい場合は、gd、imagemagick、graphicsmagick などのツールを使用して、アップロードされた画像に必要な編集を行うことを検討できます。ユーザーを削除してから、埋め込みコードを削除できるようにします。より安全にしたい場合は、画像サーバーも分離し、PHP をインストールせず、静的ファイルのみを解析する必要があります。
補足: 画像だけを判断する場合は、getimagesize というより簡単なメソッドがありますが、このメソッドは名前から画像のサイズを取得するために使用されますが、結果には画像の種類も含まれます。この方法はドキュメントの GD セクションにまとめられており、GD がインストールされていない場合でも使用できます。ただし、以前と同様、セキュリティの問題にも注意する必要があります。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
