ホームページ > バックエンド開発 > PHPチュートリアル > PHP のパス検証はどのようにしてディレクトリ トラバーサル攻撃を防ぐことができますか?

PHP のパス検証はどのようにしてディレクトリ トラバーサル攻撃を防ぐことができますか?

Barbara Streisand
リリース: 2024-12-04 19:52:16
オリジナル
455 人が閲覧しました

How Can Path Validation in PHP Prevent Directory Traversal Attacks?

パス検証を使用した PHP でのディレクトリ トラバーサル攻撃の軽減

PHP アプリケーションでは、ディレクトリ トラバーサル攻撃から保護することが重要です。機密システム ファイルへの不正アクセス。ユーザー入力 ($_GET['path'] など) からパスを受け入れる場合、そのような脆弱性を防ぐ効果的な検証手法を実装することが重要です。

ディレクトリ トラバーサルを制限する 1 つのアプローチは、実際のパスの比較を利用することです。この手法では、realpath() 関数を使用して、ベース パスとユーザー指定のパスの両方を実際のファイル システムに相当するものに解決します。

例:

$basepath = '/foo/bar/baz/';
$realBase = realpath($basepath);

$userpath = $basepath . $_GET['path'];
$realUserPath = realpath($userpath);

if ($realUserPath === false || strpos($realUserPath, $realBase) !== 0) {
    // Directory Traversal Attempt Detected!
} else {
    // Valid Path
}
ログイン後にコピー

実際のパスを比較することによって、このアプローチは、指定されたベース パスの外側を通過しようとする試みを効果的に識別します。 realpath() は、パス解決中に「仮想ディレクトリ」 (例: ., ..) を排除し、ユーザーがパスを操作して未承認の領域にアクセスできないようにします。

このメカニズムは、ディレクトリ トラバーサルの脆弱性に対して堅牢な保護を提供します。ユーザーがベース ディレクトリを基準とした相対パスを指定できるようにします。開発者は、システムの整合性とセキュリティを確保するために、そのような検証をアプリケーションに組み込むことを検討する必要があります。

以上がPHP のパス検証はどのようにしてディレクトリ トラバーサル攻撃を防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート