信任安全$_SERVER['REMOTE_ADDR']
吗?是否可以通过更改请求标头或类似内容来代替?
这样写安全吗?
if ($_SERVER['REMOTE_ADDR'] == '222.222.222.222') { // my ip address
$grant_all_admin_rights = true;
}
信任安全$_SERVER['REMOTE_ADDR']
吗?是否可以通过更改请求标头或类似内容来代替?
这样写安全吗?
if ($_SERVER['REMOTE_ADDR'] == '222.222.222.222') { // my ip address
$grant_all_admin_rights = true;
}
$_SERVER['REMOTE_ADDR']
设置HTTP请求标头来欺骗变量。HTTP_
在$_SERVER
超全局变量中创建键时,PHP会自动为所有HTTP请求标头添加前缀。
Answers:
是的,很安全。它是TCP连接的源IP,不能通过更改HTTP标头代替。
您可能要担心的一种情况是,如果您在反向代理后面,则REMOTE_ADDR将始终是代理服务器的IP,而用户IP将在HTTP标头中提供(例如X-Forwarded-For)。但是对于正常使用情况,读取REMOTE_ADDR是可以的。
$_SERVER['REMOTE_ADDR']
是TCP连接进入的IP地址。尽管从技术上讲可以双向欺骗Internet上的IP地址(通过宣布通过BGP的恶意路由),但这种攻击很可能被发现,并且对于典型的攻击者不可用-基本上,您的攻击者必须控制ISP或运营商。目前还没有针对TCP的可行的单向欺骗攻击。但是,双向IP欺骗在LAN上是微不足道的。
另请注意,它可能不是IPv4,而是IPv6地址。您当前的检查是在这方面的罚款,但如果你将检查1.2.3.4
仅发生在任何地方内$_SERVER['REMOTE_ADDR']
,攻击者可以简单地从连接2001:1234:5678::1.2.3.4
。
总的来说,对于关键应用(银行/军事/潜在损害> 50.000€)以外的任何其他用途,如果可以在本地网络中排除攻击者,则可以使用远程IP地址。
$_SERVER['REMOTE_ADDR']
TCP连接进入的IP地址是否完全取决于您的SAPI。
you have been kicked off the wlan
使用正确的工具轻松创建欺骗数据包。WPA downgrade test
例如google