首页 >后端开发 >php教程 >PHP 安全中的 $_SERVER 变量有多可靠?

PHP 安全中的 $_SERVER 变量有多可靠?

Barbara Streisand
Barbara Streisand原创
2024-11-12 16:03:02858浏览

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_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'

    • 'REQUEST_METHOD'

    • 'QUERY_STRING'
    • 'HTTP_ACCEPT'

    • 'HTTP_ACCEPT_CHARSET'

    • 'HTTP_ACCEPT_ENCODING'

    • 'HTTP_ACCEPT_LANGUAGE'


    • 'HTTP_REFERER'

    • 'HTTP_USER_ AGENT'

    • 'AUTH_TYPE'

    • 'PHP_AUTH_DIGEST'

    • 'PHP_AUTH_USER'

    • 'PHP_AUTH_PW'

    • 'PAT H_INFO'

    • 'ORIG_PATH_INFO'

    • 'REQUEST_URI'
    • 'PHP_SELF'

    • 'PATH_TRANSLATED'

    • 任意其他“HTTP_”值



  • 在信任任何 $_SERVER 之前请考虑上下文和潜在后果变量。

    以上是PHP 安全中的 $_SERVER 变量有多可靠?的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明:
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn