安全性:$_SERVER 数组 sql 注入 PHP

Security: $_SERVER array sql injection in PHP

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

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

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

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

如果你发现我问这个问题的方式有什么问题,请在你之前评论down-vote,我会立即更改。

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

看看 Chrome 插件 ModHeader:

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

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

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