【安全解决方案】深入剖析:怎样通过CDN获取用户真实IP地址 ...

打印 上一主题 下一主题

主题 815|帖子 815|积分 2445

一、业务场景

某大型互联网以及电商公司为了防止客户端获取到真实的ip地址,以及到达保护后端业务服务器不被网站攻击,同时又可以让公安要求留存网站日志和排查违法活动,以及打击犯罪的时候,获取不到真实的ip地址,发现网络安全题目对干系公司进行处罚或者警告。

CDN可以实现以下功能:

  • 网站加速:CDN可以缓存静态网页内容(如HTML、CSS、JavaScript文件)以及图片和视频等静态媒体文件,并将其分发到环球各地的边沿节点,从而加速网页加载速率,提升用户体验。
  • 下载加速:对于大文件的下载和分发,如游戏安装包、应用更新、手机ROM升级等,CDN通过其分布式节点网络加速下载过程,低落下载时间,提升用户体验。
  • 视频点播和直播加速:CDN提供高效的流媒体分发,将视频内容快速传输给环球观众,减少视频卡顿和加载时间,提升观看体验。
  • 移动应用加速:CDN可以为移动APP更新文件(apk文件)分发,移动APP内图片、页面、短视频、UGC等内容的优化提供加速分发结果。
  • 电子商务平台加速:电商平台在面临高流量和高并发访问时,CDN能够提供网站加速及SSL加速,优化移动设备访问结果,增强网站安全防护本领,进步网站服务的可用性。
  • 游戏加速:在线游戏对耽误要求较高,CDN通过低落游戏的加载时间和网络耽误,进步游戏的流畅度和稳定性。
  • 安全防护:CDN提供肯定水平的分布式拒绝服务(DDoS)攻击防护本领,由于CDN的分布式架构,可以对来自恶意请求的攻击进行过滤和缓解,确保正常用户访问不受干扰。
  • 低落资本:通过CDN可以低落带宽和服务器的资本,进步用户体验的同时,低落网站运营资本。

CDN的应用可以显着提升用户访问速率,低落运营资本,进步源站安全性,低落被黑客攻击的风险,进步网站可靠性,低落故障影响范围。
而对于制造业,CDN可以用于产物展示视频、用户手册和软件更新的快速分发,以及支持远程监控和维护等工业物联网(IIoT)应用,进步数据传输效率和实时性。
在利用CDN服务时,后端服务器获取到的通常是CDN节点的IP地址,而不是用户的真实IP地址。,这就造成了公安要求留存网站日志和排查违法活动,以及打击犯罪的时候,获取不到真实的ip地址。
三、解决方案

所以为了获取用户的真实IP地址,我们可以采取以下几种方法:
1. 利用HTTP请求头部信息:CDN通常会在回源请求的HTTP头部中添加一些特殊的字段,如`X-Forwarded-For`或`X-Real-IP`,用以传递用户的真实IP地址。后端服务器可以通过查抄这些头部字段来获取用户的真实IP。
在Nginx服务器中,可以配置`set_real_ip_from`指令来指定哪些IP地址是可信的署理服务器,并通过`real_ip_header`指令指定从哪个请求头中获取真实的IP地址。配置示例如下:
  1.  ```nginx
  2.    http {
  3.        # 设置可信的代理服务器IP
  4.        set_real_ip_from  0.0.0.0/0;
  5.        # 设置从哪个请求头获取真实IP
  6.        real_ip_header    X-Forwarded-For;
  7.        # 开启递归查找,确保获取到所有经过CDN的IP地址
  8.        real_ip_recursive on;
  9.    }
复制代码

   这样配置后,Nginx会从`X-Forwarded-For`头部中获取第一个非CDN节点的IP地址作为用户的真实IP。
2. 利用CDN提供的API或配置:一些CDN服务提供了API或配置选项,允许你获取用户的真实IP地址。例如,阿里云CDN提供了`Ali-CDN-Real-IP`头部参数,用于记录客户端的真实IP地址。在Nginx配置中,可以设置`proxy_set_header Ali-CDN-Real-IP $remote_addr;`来获取真实IP。
3. 修改后端服务器配置:在后端服务器(如Nginx)的配置文件中,可以添加特定的配置来剖析从CDN传来的请求头,从而获取用户的真实IP。例如,可以设置`fastcgi_param REMOTE_ADDR $http_x_forwarded_for;`来将真实IP传递给后端应用。
4. 利用环境变量:在前端应用中,可以通过环境变量来配置API请求的基地址,从而确保请求能够正确地发送到后端服务器。例如,在React应用中,可以定义环境变量`REACT_APP_API_URL`,并在发送请求时利用这个变量作为API的基地址。

5. 利用配置文件:在前端代码中,可以读取配置文件(如JSON或YAML格式)来获取后端域名,然后利用这个域名进行API请求。
6. 通过服务器署理:在前端开辟服务器(如利用Node.js和Express)上配置署理中间件,将前端请求转发到后端服务器,从而隐藏后端域名并解决跨域题目。
7. 动态天生域名:在某些情况下,可以根据当前环境或用户地理位置等信息动态天生后端域名。
通过上述方法,可以有用地配置CDN背景,使后端服务器能够获取到前端用户的真实请求地址。


 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表