PHP 言語開発では、パス トラバーサルの脆弱性が一般的なセキュリティ問題です。攻撃者はこの脆弱性を利用してシステム内のファイルを読み取ったり、さらには改ざんしたりすることができ、システムのセキュリティを大幅に危険にさらす可能性があります。この記事では、パス トラバーサルの脆弱性を回避する方法について説明します。
1. パス トラバーサルの脆弱性とは何ですか?
パス トラバーサル (ディレクトリ トラバーサルの脆弱性とも呼ばれます) とは、攻撃者が「../」演算子またはその他の形式の相対パスを使用して、アプリケーションのルート ディレクトリの外側にある Directory に侵入し、ファイルを読み取ったり変更したりすることを意味します。アプリケーションに関連するもの。
たとえば、ユーザーがファイル パスとして「../../../../etc/passwd」を入力すると、アプリケーションはファイル パスを制限せず、指定されたパスを連結します。ユーザーをファイル システムに侵入すると、攻撃者はシステム内の機密情報を取得する可能性があります。
2. パス トラバーサルの脆弱性を回避するにはどうすればよいですか?
パス トラバーサルの脆弱性を回避するための最も重要な手順は、ユーザー入力を検証して、入力に有効な文字とパス識別子のみが含まれていることを確認することです。正規表現、ホワイトリストなどを使用して、ユーザー入力をフィルタリングできます。
たとえば、Apache の一般的なディレクトリ トラバーサルの脆弱性では、次のような URL が使用されます:
http://localhost/index.php?page=../../.. / ../etc/passwd
攻撃者は、この URL に悪意のあるリクエストを送信することで、システム内の機密ファイルを読み取ることができます。この攻撃を防ぐために、ユーザーの入力に文字、数字、一部の特殊記号などの特定の文字のみが含まれるように制限できます。
許可されたユーザーのみがファイルにアクセスできるように、アプリケーションはファイル アクセス許可を制限する必要があります。特に Web アプリケーションでは、サーバー上のファイルとディレクトリが Web ユーザーのみに読み書き可能であることを保証する必要があります。
たとえば、Linux システムでは、chroot を使用して、プロセスのファイル仮想ルート ディレクトリを制限できます。 PHP では、open_basedir を使用してスクリプト ファイルのアクセス許可を制限できます。
絶対パスを使用すると、パス トラバーサルの脆弱性を回避できます。 PHP では、$_SERVER['DOCUMENT_ROOT'] または __DIR__ を使用して、ファイルが配置されている絶対パスを取得できます。
たとえば、次のコードはパス トラバーサルの脆弱性を回避できます:
$file = __DIR__ . '/data/' . $_GET['file'] ;
if(file_exists($file) {
}
?>
PHP バージョンが 5.3.4 より低い場合は、すぐに最新バージョンに更新することをお勧めします。PHP 5.3.4 では、パス トラバーサルの脆弱性を回避するために、新しいチェック関数 realpath_cache_get が導入されています。漏洩
エラー報告を無効にする: エラー報告は次の方法で無効にできます。 error_reporting 関数。
以上がPHP 言語開発におけるパス トラバーサルの脆弱性を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。