我正在开发一个依赖于$ _SERVER ['REMOTE_ADDR']的系统来获取用户地址并根据白名单地址进行检查。 这种方法安全吗?或者有一种在超全局变量中强制值的方法吗?
谢谢你, 迪奥戈
答案 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(以及表现良好的代理),那么这种情况就可以得到妥善处理。