ディレクトリ トラバーサルの脆弱性は、ネットワーク セキュリティの一般的な問題であり、攻撃者が特定の URL または API にアクセスすることによって、ユーザー パスワードや設定ファイルなどのシステム内の機密ファイルを取得できるようになります。 PHP では、相対パスを使用してファイル システム内のファイルまたはディレクトリにアクセスすることにより、ディレクトリ トラバーサルの脆弱性が発生します。 PHP を使用してディレクトリトラバーサルの脆弱性を防止する方法は非常に重要ですので、以下に効果的な防止策をいくつか紹介します。
ユーザーが提供したデータは、たとえ信頼できるソースからのものであっても、信頼できないものとみなされるべきです。ユーザー入力が処理されるときは、悪意のあるユーザーが特殊文字を送信してアプリケーションのセキュリティ チェックを回避するのを防ぐために、入力をフィルタリング、検証し、必要に応じてエンコードする必要があります。
相対パスを使用するとファイル システムの管理が容易になりますが、ファイルの参照に絶対パスを使用すると、ディレクトリ トラバーサル攻撃を効果的に防ぐことができます。 PHP では、__FILE__ 定数を使用して現在のファイルの絶対パスを取得し、次に dirname() 関数を使用して現在のファイルが配置されているディレクトリのパスを取得できます。
ユーザー要求を受信したときは、要求されたパスが実際にファイル内に存在するパスを指していることを確認するために、最初に要求されたパスを検証する必要があります。システムファイルまたはディレクトリ。 file_exists() 関数や is_dir() 関数などの PHP の組み込み関数を使用してパスを検証できます。検証が失敗した場合は、エラー メッセージが返され、アクセスが拒否されます。
特定のファイルまたはディレクトリにパブリックにアクセスする必要がない場合は、HTTP サーバーまたはオペレーティング システム レベルでアクセス許可を制御することで実現できます。 。 PHP では、chmod() 関数を使用してファイルまたはディレクトリの読み取り、書き込み、および実行のアクセス許可を設定するなど、ファイルまたはディレクトリのアクセス許可を設定することによってアクセス許可を制限することもできます。
ユーザーが要求したパスがシステムに存在するかどうかがわからない場合があります。この場合、ホワイトリストを使用してリクエストをフィルタリングし、特定のファイルまたはディレクトリのみへのアクセスを許可できます。ホワイトリストは構成ファイルに保存でき、ユーザーがリクエストを行うと、構成ファイルを読み取ってリクエストがホワイトリストに含まれているかどうかを確認できます。
上記は、ディレクトリ トラバーサルの脆弱性を防ぐための一般的な方法の一部です。実際には、CDN を使用してリクエストをフィルタリングする、正規表現を使用して入力をフィルタリングするなど、他の方法もあります。どのアプローチであっても、アプリケーションとユーザー データを保護することは重要です。
以上がPHP を使用してディレクトリ トラバーサルの脆弱性から保護する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。