PHP变量$_SERVER_NAME‘SERVER_NAME’可以伪造或伪造吗?我打算用它作为表单发布的一种安全措施。我会检查以确保该变量是我的站点名称(www.example.com)。我知道HTTP_REFERRER是可以伪造的,但在这一点上我不太确定。
谢谢!
发布于 2012-07-09 09:53:48
实际上,$_SERVER'SERVER_NAME‘可能会受到客户端浏览器发送的内容的影响...有关此问题的全面调查,请参阅http://shiflett.org/blog/2006/mar/server-name-versus-http-host。
发布于 2012-07-09 09:55:50
访问者通常是不能伪造的。但我怀疑您可能希望强制使用某个SERVER_NAME来许可脚本,以便它们只能由特定的域使用。在这种情况下,答案是肯定的,这个变量绝对可以伪造为。
原因很简单,服务器设置这个值。在大多数情况下,您会让PHP作为Apache模块运行,但有时您会有其他Apache模块,有时您会使用NGINX或IIS在CGI模式下运行PHP,有时您甚至会让PHP作为CLI运行,作为部署在云中的定制服务器的子进程。这些服务器将负责设置该变量。
另外,总是有手动分配的。
$_SERVER['SERVER_NAME'] = ... // this can go above all your scripts发布于 2012-07-09 09:44:22
它不可能是伪造的,persay,但它总是会返回你的站点名称。如果您使用相同的脚本运行多个站点,例如,根据所提供的主机名使用不同的数据库,则此方法非常有用。
'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. https://stackoverflow.com/questions/11388223
复制相似问题