我将快速解释设置,我们有多个域,在2台服务器(Dev和Live)上运行,所有这些域都是从Live服务器上的CMS数据库填充的。我正在添加404报告,因此每个站点都会记录它获得的任何404,我们可以在CMS中查看它们。
每个网站,当我们的框架检测到404错误时,它会对http://cms.example.com/log404.php
进行卷曲调用并发送$_SERVER
变量。在log404.php的顶部,我有这个包装整个日志代码的代码。
if (in_array($_SERVER['REMOTE_ADDR'], array('dev server ip', 'live server ip'))) {
然后在这里我存储来自$_POST
的相关数据位。我这样做的原因,而不是每个网站只是直接添加到数据库,是因为我们想以某种方式更改日志代码(记录不同的数据,写入文件,更改数据库等),它只需要更改一次而不是15个以上的不同网站。
以上if语句是否是一种安全的方法来检查我们是否发布了数据,而不是其他人?或者有人可以操纵卷曲调用,因此REMOTE_ADDR似乎是我们的IP之一吗?
答案 0 :(得分:1)
$_SERVER['REMOTE_ADDR']
使用TCP握手中的IP地址,因此适用的答案相同:Is it possible to pass TCP handshake with spoofed IP address?。
因此,如果这是通过互联网进行的,那么您就可以免受IP欺骗。
但是,为了获得额外保护,您还应该使用身份验证(@moonwave99 suggested)来保护您的日志服务,并且您应该只通过HTTPS连接运行您的日志服务。