使用$ _SERVER变量的安全性

时间:2010-03-09 01:30:22

标签: php

我正在开发一个依赖于$ _SERVER ['REMOTE_ADDR']的系统来获取用户地址并根据白名单地址进行检查。 这种方法安全吗?或者有一种在超全局变量中强制值的方法吗?

谢谢你, 迪奥戈

4 个答案:

答案 0 :(得分:2)

值本身应该不受外部注入的影响 - 它由Web服务器提供 - 但客户端IP可以是spoofed

相关的好读物:What is the most accurate way to retrieve a user’s correct IP address in PHP?

答案 1 :(得分:1)

这种方法很安全。

  

此阵列中的条目由Web服务器创建。

答案 2 :(得分:1)

$_SERVER['REMOTE_ADDR']中的值由Apache(或您正在使用的任何Web服务器)设置,而不是由用户设置。因此,除非用户可以访问系统本身(而不仅仅是Web访问),否则您不必担心用户修改它。但是,如果您需要将用户列入白名单,则可能需要担心代理地址。

答案 3 :(得分:1)

用户无法“强制将值强加到此超全局”。

我不确定其他PHP代码是否可以这样做,但这应该在你的控制之下。

此外,如果您和用户之间存在代理,则应检查REMOTE_ADDR是否设置正确。我认为如果你使用Apache(以及表现良好的代理),那么这种情况就可以得到妥善处理。