首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Superglobals: PHP安全性

Superglobals: PHP安全性
EN

Stack Overflow用户
提问于 2012-03-29 05:33:42
回答 3查看 612关注 0票数 1

客户端有没有可能以某种方式修改PHP超全局变量,尤其是$_SERVER --也许不是以一种通用的方式?

换句话说,这段代码是否安全:

代码语言:javascript
复制
if (($this->error->getCode()) == '404') {
   ob_clean();
   echo @file_get_contents("http://".$_SERVER['SERVER_NAME'].'/404.html');
} 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-29 05:39:20

这段代码没问题-- SERVER_NAME不能修改。需要注意的是$_SERVER['PHP_SELF']$_SERVER['REQUEST_URI'],因为用户可以在地址栏中添加一些js -如果这些js被写到屏幕上,则应该小心地进行转义。

不过,您的代码很好。

票数 5
EN

Stack Overflow用户

发布于 2012-03-29 05:40:37

是的,那很好。

任何用户都无法更改代码的任何变量,除非您使用某种POST/GET/COOKIE等方式将其开放给用户

顺便说一句,如果文件在您的服务器上,为什么要使用file_get_contents()?

票数 1
EN

Stack Overflow用户

发布于 2012-03-29 05:44:00

在这种情况下,因为$_SERVER变量只包含与执行脚本的web服务器相关的数据,所以我不认为有任何潜在的安全问题,除非web服务器本身受到了威胁。在这种情况下,你手上有更大的问题。此规则的主要例外是如果您使用PHP_SELFREQUEST_URI,因为这些值可以通过用户在地址栏中的输入进行更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9915987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档