有没有办法检测连接是否通过CloudFlare进行?

时间:2018-03-26 11:58:40

标签: php security

我想知道带$ _SERVER的变量是否应该被视为安全,或者是否应该在使用之前对其进行过滤。我试图检测连接是否来自CloudFlare。在此基础上,我选择获取客户IP地址的方法。当连接来自CloudFlare时,$_SERVER["HTTP_CF_CONNECTING_IP"]应该存在,其内容应该是客户端的IP。

根据Which $_SERVER variables are safe? $_SERVER["HTTP_CF_CONNECTING_IP"]可以由用户控制,因此以这种方式获得的IP可能是欺骗性的。
$ip = isset($_SERVER["HTTP_CF_CONNECTING_IP"])?$ _SERVER["HTTP_CF_CONNECTING_IP"]:$ _SERVER["REMOTE_ADDR"];

这个问题有什么好的解决方案吗?

1 个答案:

答案 0 :(得分:4)

$_SERVER的数据未明确设计为被视为SQL源代码。

$_SERVER中的某些数据直接从HTTP请求中复制(即用户输入)。

应将其视为系统外部的任何其他输入,并应应用适当的转义/过滤。