可以在$ _ SERVER [ 'SERVER_NAME']伪造/伪造?(Can $

2019-09-19 05:58发布

可以将PHP变量$ _ SERVER [“SERVER_NAME”]伪造,伪造? 我打算使用作为表单提交安全措施。 我会检查,以确保变量是我的网站的域名(www.example.com)。 我知道HTTP_REFERRER可以伪造的,但我不知道这一点。

谢谢!

Answer 1:

实际上$ _ SERVER [“SERVER_NAME”]可以通过什么客户端浏览器发送过来的影响...查看http://shiflett.org/blog/2006/mar/server-name-versus-http-host通过调查为上问题。



Answer 2:

访问者不能正常伪造出来。 但我怀疑你会想强制某个SERVER_NAME所以他们只能通过特定的域使用许可的脚本。 在这种情况下,答案是肯定的, 这个变量绝对可以伪造

原因很简单,服务器设置此值。 在大多数情况下,你必须运行PHP作为Apache模块,但有时你有其他的Apache模块,有时你已经PHP与NGINX或IIS CGI模式下运行,有时你甚至有运行PHP的CLI分叉的子进程通过自定义 - 内置服务器部署在云中。 这些服务器将负责制定该变量。

另外,总是有手动分配。

 $_SERVER['SERVER_NAME'] = ... // this can go above all your scripts


Answer 3:

它不能被伪造,PerSay公司,但它总是会返回您的网站名称。 如果你正在运行多个站点关闭相同的脚本,例如,请根据提供的主机名不同的数据库是非常有用的。

在PHP文件说:

'SERVER_NAME'
    The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host. 


文章来源: Can $_SERVER['SERVER_NAME'] be forged/faked?