首頁 > 後端開發 > php教程 > PHP 安全性中的 $_SERVER 變數有多可靠?

PHP 安全性中的 $_SERVER 變數有多可靠?

Barbara Streisand
發布: 2024-11-12 16:03:02
原創
863 人瀏覽過

How Reliable Are $_SERVER Variables in PHP Security?

評估 $_SERVER 變數的安全性

HTTP 請求標頭通常包含可由使用者控制的資訊。因此,許多 $_SERVER 變數可能會被惡意輸入污染並成為攻擊來源。

了解受控值

伺服器控制的變量,例如“SERVER_ADDR”和“SERVER_SOFTWARE”由伺服器配置設置,本質上是安全。

部分伺服器控制的變數取決於請求,且有效值有限,使其可靠。範例包括“REMOTE_ADDR”和“REQUEST_TIME”。

任意使用者控制值

相反,任意使用者控制值可以包含客戶端發送的任何輸入,包括潛在的惡意內容。 'HTTP_USER_AGENT' 和 'PHP_SELF' 等變數就屬於此類。

評估可靠性

決定 $_SERVER 變數的可靠性取決於特定的使用情況和伺服器配置。例如:

  • 「REMOTE_ADDR」通常是可靠的,但可能在 DNS 攻擊中被欺騙。
  • 如果伺服器拒絕具有無效主機標頭的請求,則可以認為「HTTP_HOST」是安全的。
  • 如果伺服器限制允許,「REQUEST_METHOD」是可靠的

$_SERVER 變數的分類

  • 伺服器受控:

    • 'GATEWAY_INTERFACE'


    • 'SERVER_SOFTWARE '

    • ;'DOCUMENT_ROOT'

    • 'SERVER_ADMIN'

    • 'S ERVER_SIGNATURE'


  • 部分伺服器受控:

    • 'HTTPS'

    • 'REQUEST_TIME'

    • '偏僻的_ADDR'

    • 'REMOTE_HOST'

    • 'REMOTE_PORT'

    • 'SERVER_PROTO COL'

    • 'HTTP_HOST'

    • 'SERVER_NAME'

    • 'SCRIPT_FILENAME '

    • 'SERVER_PORT'

    • 'SCRIPT_NAME'


    li>

  • 完全任意的使用者控制值:

    • 'argv', 'argc'

    • 'REQUEST_METHOD '

  • 'QUERY_STRING'

  • 'HTTP_ACCEPT'

  • 'HTTP_ACCEPT_CHARSET'

  • 'HTTP_ACCEPT_ENCODING'

  • 'HTTP_ACCEPT_LANGUAGE'

  • 'HTTP_CONNECTION'

  • 'HTTP_REFERER'


  • '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_」值

在信任任何$_SERVER 變數之前請考慮上下文和潛在後果。

以上是PHP 安全性中的 $_SERVER 變數有多可靠?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板