【问题标题】:is $_SERVER vulnerable to change by users$_SERVER 是否容易被用户更改
【发布时间】:2014-06-24 00:17:19
【问题描述】:

我真的很想使用以下问题的答案:How can I force users to access my page over HTTPS instead of HTTP?

但我一直认为全局 $_SERVER 变量容易受到用户更改的影响,因此不应依赖它。这是真的吗?

if($_SERVER["HTTPS"] != "on")
{
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}

如果它容易改变,为什么这么多人推荐这个答案。

【问题讨论】:

标签: php ssl https


【解决方案1】:

$_SERVER 中的值是托管 Web 服务器设置的环境变量。这取决于 HTTPS 环境变量设置的确切程度来说明它是否“安全”;但通常在 Apache 中,该值由 SSL 模块设置当且仅当它提供 SSL 连接时。据任何人(或至少我)所知,用户无法在请求中发送任何内容来更改此值。用户应该只能发送 HTTP 标头,这些标头都以 $_SERVER['HTTP_*'] 值结尾,而不是普通的 'HTTPS'

因此,除非您的 Web 服务器中存在一些未知错误,允许用户在请求中发送信息,从而诱使服务器错误地设置 HTTPS 环境变量,否则它是非常安全的。

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多