検索
ホームページバックエンド開発PHPチュートリアルWeb上の脆弱性とその原理分析と防止方法(ファイル名検出の脆弱性)_PHPチュートリアル

Web上の脆弱性とその原理分析と防止方法(ファイル名検出の脆弱性)_PHPチュートリアル

Jul 20, 2016 am 11:16 AM
web優れたポイント分析する原理私たちファイル名方法検出抜け穴合格予防措置

前回の記事: から、バックエンドがサーバー変数を取得し、その多くはクライアントから渡されることがわかりました。通常の get および post と変わりません。一般的な脆弱なコードを見てみましょう。
1. ファイルの種類を検出し、ユーザーのファイル名で保存します

コードをコピー コードは次のとおりです。
if(isset($_FILES['img']))
{
$file = save_file($_FILES['img']);
if($file===false) exit('保存に失敗しました!');

echo "正常に保存されました!",$file;
}
関数 check_file($img)
{
///ファイルを読み込みます
if($img['error']>0) return false;

$tmpfile = $img['tmp_name'];
$filename = $img['name'];


///ファイル拡張子を読み取る
$len=strrpos($filename,".");
if($len===false) false を返します;

// 拡張機能を取得
$ext = strto lower(substr($filename,$len+1));
if(!in_array($ext,array('jpg','jpeg','png'))) return false;
true を返します;
}
関数 save_file($img)
{
if(!check_file($img)) false を返します;

//フォーマット検出OK、データ移動の準備
$filename = $img['name'];
$newfile = "アップロード/" .$ファイル名;
if(!move_uploaded_file($img["tmp_name"],$newfile)) return false;

$newfile を返します;
}
?>


上記のコードでは入力の種類も判定されており問題ありません。しかし、問題はまさに、取得したユーザー名変数の検出に現れます。受信したユーザー名を直接取得し、ファイルとして保存します。 友人の中には、「これらのファイル名はすべて私のコンピュータに存在しており、ファイル名の形式はオペレーティング システムのファイル名定義によって制限されている」と言う人もいます。 ただし、$_FILES で取得される変数は http リクエストから直接取得されることに注意してください。他の get 変数や post 変数を取得する場合と同じです。 したがって、下心のある人がブラウザを自分でシミュレートし、特別なファイル名をサーバーに送信することがよくあります。その後、ファイルを保存するときに、通常どおり独自の形式で保存できます。

数年前までは、文字列に「」を含めてファイルとして保存すると、以下の内容が自動的に切り詰められてしまいました。 例: $filename は「a.php.jpg」という構造になっています。考えてみましょう。どうなるでしょうか?
$newfile = “upload/a.php.jpg” 拡張子検証のため、右端の「.」に続く文字は許容される画像形式である jpg であるためです。 ただし、そのファイル名で保存するとすぐに。 ディスクはアップロード ディレクトリの下に .php を生成し、後続の文字はすべて自動的に切り詰められることがわかります。

この脆弱性は大流行しました。当時、ほとんどのホスティング Web サイトには抜け穴がありました。しばらくの間、多くのプラットフォームが預金を閉鎖しました。実はこれが根本的な理由なのです。ファイル名を取得し、それを最終的に生成されたファイル名として保存しました。 良い方法は、ファイル名をランダムに生成し、拡張子を自分で読み取ることです。これにより、ファイルの保存時に破棄または切り捨てられる特殊文字の入力を防ぐことができます。

この脆弱性は php4 時代に悪用される可能性があり、php5 時代では、生成される変数ファイル名の値から「」が自動的に除外されるため、ユーザーがどのような特別なユーザー名を作成しても切り詰められます。 ただし、現在、この種の脆弱性は asp、jsp、およびその他のサイトに存在します。今でも頻繁に登場します。古いバージョンの PHP サイトも頻繁に表示されます。
さて、今日はここで終わりにしましょう。他にも 2 つの一般的な方法がありますが、それについては後ほど説明します。コミュニケーションへようこそ!

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/372330.html技術記事前回の記事: Web 上の脆弱性、その原理の分析、および防止方法 (安全なファイルを保存する方法) から、バックエンドがサーバー変数を取得し、その多くがクライアントから渡されることがすでにわかっています。いつもと同じ...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
アクション中のPHP:実際の例とアプリケーションアクション中のPHP:実際の例とアプリケーションApr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:インタラクティブなWebコンテンツを簡単に作成しますPHP:インタラクティブなWebコンテンツを簡単に作成しますApr 14, 2025 am 12:15 AM

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPython:2つの一般的なプログラミング言語を比較しますPHPとPython:2つの一般的なプログラミング言語を比較しますApr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの永続的な関連性:それはまだ生きていますか?PHPの永続的な関連性:それはまだ生きていますか?Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール