識別安全的 $_SERVER 變量
攻擊者可以利用用戶可以控制的變量,使它們不安全或「被污染」。本文旨在提供 $_SERVER 變數及其各自安全等級的完整清單。
伺服器控制
這些變數由伺服器設定,不受使用者影響輸入:
- 'GATEW AY_INTERFACE'
- 'SERVER_ADDR'
- 'SERVER_SOFTWARE'
- 'DOCUMENT_ROOT'
- 'SERVER_ADMIN'
- 'SERVER_SIGNATURE'
部分伺服器控制
這些變數取決於客戶端的要求,但有效值有限,使其可靠:
- 'HTTPS'
- 'REQUEST_TIME'
- 'REMOTE_ADDR'(透過 TCP/IP驗證握手)
- 'REMOTE_HOST'(可能是欺騙性的)
- 'REMOTE_PORT'
- 'SERVER_PROTOCOL'
- 'SERVER_PROTOCOL'
'HT伺服器)
- 'SERVER_NAME'
- 'SCRIPT_FILENAME'
- 'SERVER_PORT'
'SCRIPT_NAME '
完全任意的使用者受控
這些變數容易受到使用者操縱:-
- 'argv', 'argc'
- 'REQUEST_METHOD'
- 'QUERY_STRING'
- 'HTTP_ACCEPT'
- 'HTTP_ACCEPT_CH ARSET'
- 'HTTP_ACCEPT_ENCODING'
- 'HTTP_ACCEPT_LANGUAGE'
- 'HTTP_CONNECTION'
- 'HTTP_REFERER'
- 'HTTP_USER_AGENT'
- 'AUTH_TYPE'
- 'PHP_AUTH_DIGEST'
- 'PHP_AUTH_PW'
- 'PATH_INFO'
- 'ORIG_PATH_INFO'
- 'REREQUEST_URI' (可能包含受污染的數據)
- 'PHP_SELF'(可能包含受污染的數據)
- 'PATH_TRANSLATED'
- 任何其他'HTTP_' 值
環境變數
環境變數的安全性取決於其來源。它們的範圍可以從完全伺服器控製到完全用戶控制。
以上是PHP 中哪些 $_SERVER 變數可以安全使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!