$_SERVER 変数のセキュリティの評価
HTTP リクエスト ヘッダーには、多くの場合、ユーザーが制御できる情報が含まれています。その結果、多くの $_SERVER 変数が悪意のある入力によって汚染され、攻撃源となる可能性があります。
制御された値について
「SERVER_ADDR」などのサーバー制御変数
部分的にサーバー制御される変数はリクエストに依存し、有効な値が制限されているため、信頼性が高くなります。例には、「REMOTE_ADDR」と「REQUEST_TIME」が含まれます。
任意のユーザー制御値
対照的に、任意のユーザー制御値には、クライアントによって送信された任意の入力を含めることができます。潜在的に悪意のあるコンテンツが含まれます。 「HTTP_USER_AGENT」や「PHP_SELF」などの変数がこのカテゴリに分類されます。
信頼性の評価
$_SERVER 変数の信頼性の判断は、特定の使用法とサーバー構成によって異なります。 。例:
- 'REMOTE_ADDR' は一般に信頼できますが、DNS 攻撃でなりすましされる可能性があります。
- 'HTTP_HOST' は、サーバーが無効なホスト ヘッダーを持つリクエストを拒否した場合は安全であると考えられます。
- 'REQUEST_METHOD' は、サーバーが許可されたメソッドを制限している場合に信頼できます。
$_SERVER 変数の分類
< li>サーバー制御:
- 'GATEWAY_INTERFACE'
- 'SERVER_ADDR'
- 'SERVER_SOFTWARE'
- 'DOCUMENT_ROOT'
- 'SERVER_ADMIN'
- 'SERVER_SIGNATURE'
- 部分的にサーバー制御:
- 'HTTPS'
- 'REQUEST_TIME'
- 'REMOTE_ADDR'
< ;li>'REMOTE_HOST'
- 'REMOTE_PORT'
- 'SERVER_PROTOCOL'
- 'HTTP_HOST '
- 'SERVER_NAME'
- 'SCRIPT_FILENAME'
- 'SERVER_PORT'
- 'SCRIPT_NAME'
完全に任意のユーザー制御値:
- 'argv'、'argc'
< li>'REQUEST_METHOD'
'QUERY_STRING''HTTP_ACCEPT''HTTP_ACCEPT_CHARSET' 'HTTP_ACCEPT_ENCODING''HTTP_ACCEPT_LANGUAGE''HTTP_CONNECTION' 'HTTP_REFERER''HTTP_USER_AGENT''AUTH_TYPE'< li>'PHP_AUTH_DIGEST'
'PHP_AUTH_USER''PHP_AUTH_PW''PATH_INFO' 'ORIG_PATH_INFO''REQUEST_URI''PHP_SELF' 'PATH_TRANSLATED'その他の 'HTTP_' 値
$_SERVER 変数を信頼する前に、コンテキストと潜在的な結果を考慮してください。
以上がPHP セキュリティにおける $_SERVER 変数の信頼性はどの程度ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。