3

我编写了一个 PHP 函数,它记录$_SERVER数组中的所有内容,如果我的数据库中不存在某个$_SERVER变量,它将添加该列。

我的问题是:这听起来有多安全?在研究和理解标题信息之后,出现了一些问题。

  1. 客户端是否能够修改发送到服务器的某些变量,他们的浏览器代理或操作系统?
  2. 从自己的服务器托管站点的人是否能够将代码插入到他们自己的自定义$_SERVER数组中?

总的来说,我只是在问这听起来有多安全,但这些是我首先想到的问题。

如果您发现我提出这个问题的方式有任何问题,请在投反对票之前发表评论,我会立即更改。

4

2 回答 2

5

$_SERVER不能信任$_SERVER['HTTP_USER_AGENT']包含一个易于用户配置的字符串 - 可以进行 SQL 注入。甚至为此目的还有浏览器插件。事实上,有很多$_SERVERvar 可以由用户更改,例如$_SERVER['HTTP_ACCEPT_LANGUAGE'].

看看 Chrome 插件ModHeader

在此处输入图像描述

于 2015-02-24T18:26:42.210 回答
2

PHP 使用 $_SERVER 变量来返回有关基于服务器的信息的信息,它不是存储数据的地方。老实说,还是第一次听说有人想用$_SERVER superglobal 来存储数据。也许你应该使用 $_SESSION ?如果数据库不是一个选项,我认为这是存储数据的正确方法......

每次重新加载页面时,$_SERVER 数组似乎也会刷新。@ByteHamster 指出的 $_SERVER 变量中的一些值可以被篡改。

关键是您正在尝试使用不是为此目的而设计的东西...

于 2015-02-24T18:37:19.850 回答