客服热线:00000000000

我们该如何获取当前访客的真实IP地址信息,PHP函数_CDN加速之后

后台-系统设置-扩展变量-手机广告位-内容广告位一

  最近朋友对一个项目网站进行二次开发和防护,为了简单抵挡一下竞争对手的DDoS攻击,他给网站开启了腾讯云CDN加速服务。

我们该如何获取当前访客的真实IP地址信息,PHP函数_CDN加速之后

  开启CDN之后,之前他写的Shell防护脚本也就宣告无效了,因为不管是正常访问还是攻击访问,脚本拿到的IP都是CDN节点的,而我不可能把CDN的节点IP也给禁用了,那就都不能访问了。

  目前国内已经争相出现了百度云加速、腾讯云、阿里云、加速乐、360网站卫士以及安全宝等CDN加速服务。不仅能够有效的隐藏自己的服务器IP地址,还能很好的防御DDos攻击和加快网站的访问速度,cdn加速对于网站来说是很有必要的。

  于是,网站的访问模式就变为:用户浏览器→CDN节点→网站源服务器

  甚至是更复杂的模式;用户浏览器→CDN节点(CDN入口、CC\DDoS攻击流量清洗等)→腾讯云盾→源服务器

  可以看到,我们的网站中间经历了好几层的透明加速和安全过滤,这种情况下,我们就不能用上面的“普通配置”。因为普通配置中基于【源IP的限制】的结果就是,我们把【CDN 节点】或者【阿里云盾】给限制了,因为这里“源 IP”地址不再是真实用户的IP,而是中间CDN节点的IP地址。

  我们需要限制的是最前面的真实用户,而不是中间为我们做加速的加速服务器。

  其实,当一个CDN或者透明代理服务器把用户的请求转到后面服务器的时候,这个CDN服务器会在Http的头中加入一个记录

  X-Forwarded-For;用户IP,代理服务器IP

  如果中间经历了不止一个代理服务器,这个记录会是这样

  X-Forwarded-For;用户IP,代理服务器1-IP,代理服务器2-IP,代理服务器3-IP, ….

  可以看到经过好多层代理之后, 用户的真实IP在第一个位置,后面会跟一串中间代理服务器的IP地址,从这里取到用户真实的IP地址,针对这个IP地址做限制就可以了。

  我们如何通过PHP获取访问用户的真实IP呢?

  今天我就讲自己编写的代码发给大家,支持cdn加速获取用户IP,也支持不加速获取IP。IsCDN默认flase为不启动cdn加速获取用户IP,true则相反。

后台-系统设置-扩展变量-手机广告位-内容广告位二

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。