安全な $_SERVER 変数の特定
攻撃者は、ユーザーが制御できる変数を悪用して、変数を安全でないか「汚染」する可能性があります。この記事は、$_SERVER 変数とそれぞれの安全性レベルの包括的なリストを提供することを目的としています。
サーバー制御
これらの変数はサーバーによって設定され、ユーザーの影響を受けません。 input:
- 'GATEWAY_INTERFACE'
- 'SERVER_ADDR'
- 'SERVER_SOFTWARE'
- 'DOCUMENT_ROOT'
- 'SERVER_ADMIN'
- 'SERVER_SIGNATURE'
部分的にサーバー制御
これらの変数はクライアントのリクエストに依存しますが、有効な値が限られているため、信頼性が高くなります。
- 'HTTPS'
- 'REQUEST_TIME'
- 'REMOTE_ADDR' (TCP/IP ハンドシェイクによって検証される)
- 'REMOTE_HOST' (なりすましの可能性がある) )
- 'REMOTE_PORT'
- 'SERVER_PROTOCOL'
- 'HTTP_HOST' (サーバーによって処理されない場合)
- 'SERVER_NAME'
- 'SCRIPT_FILENAME'
- 'SERVER_PORT'
- 'SCRIPT_NAME'
完全に任意のユーザー制御
これらの変数は次のとおりですユーザー操作に対して脆弱:
- 'argv'、'argc'
- 'REQUEST_METHOD'
- 'QUERY_STRING'
- 'HTTP_ACCEPT'
- 'HTTP_ACCEPT_CHARSET'
- 'HTTP_ACCEPT_ENCODING'
- 'HTTP_ACCEPT_LANGUAGE'
- 'HTTP_CONNECTION'
- 'HTTP_REFERER'
- ' HTTP_USER_AGENT'
- 'AUTH_TYPE'
- 'PHP_AUTH_DIGEST'
- 'PHP_AUTH_USER'
- 'PHP_AUTH_PW'
- 'PATH_INFO'
- 'ORIG_PATH_INFO'
- 'REQUEST_URI' (汚染されたデータが含まれる可能性があります)
- 'PHP_SELF' (汚染されたデータが含まれる可能性があります)
- 'PATH_TRANSLATED'
- その他の 'HTTP_' 値
環境変数
環境変数の安全性は、そのソースによって異なります。完全にサーバー制御のものから完全にユーザー制御のものまで多岐にわたります。
以上がPHP で安全に使用できる $_SERVER 変数はどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。