客户端有没有可能以某种方式修改PHP超全局变量,尤其是$_SERVER --也许不是以一种通用的方式?
换句话说,这段代码是否安全:
if (($this->error->getCode()) == '404') {
ob_clean();
echo @file_get_contents("http://".$_SERVER['SERVER_NAME'].'/404.html');
} 发布于 2012-03-29 05:39:20
这段代码没问题-- SERVER_NAME不能修改。需要注意的是$_SERVER['PHP_SELF']或$_SERVER['REQUEST_URI'],因为用户可以在地址栏中添加一些js -如果这些js被写到屏幕上,则应该小心地进行转义。
不过,您的代码很好。
发布于 2012-03-29 05:40:37
是的,那很好。
任何用户都无法更改代码的任何变量,除非您使用某种POST/GET/COOKIE等方式将其开放给用户
顺便说一句,如果文件在您的服务器上,为什么要使用file_get_contents()?
发布于 2012-03-29 05:44:00
在这种情况下,因为$_SERVER变量只包含与执行脚本的web服务器相关的数据,所以我不认为有任何潜在的安全问题,除非web服务器本身受到了威胁。在这种情况下,你手上有更大的问题。此规则的主要例外是如果您使用PHP_SELF或REQUEST_URI,因为这些值可以通过用户在地址栏中的输入进行更改。
https://stackoverflow.com/questions/9915987
复制相似问题