我正在分析一个基于 Elastic Load Balancer 的公共路由堆栈,该路由堆栈打开了 PM2 所暴露的端口,并使用 koa 模块启动了一个 Node 应用程序。目前,IP 地址是记录在日志中的,这完全取决于
有没有一种简单的方法来防止篡改此标头或设置 AWS 的 ELB 以忽略手动插入的标头?还是有比易受欺骗的标头更好的方法来获取访问者的真实 IP 地址?
X-Forwarded-For
标头。如果使用 curl
手动创建此标头,则应用程序将其写入为 IP 地址。有没有一种简单的方法来防止篡改此标头或设置 AWS 的 ELB 以忽略手动插入的标头?还是有比易受欺骗的标头更好的方法来获取访问者的真实 IP 地址?
ctx.request.ip
时返回。这是由AWS的ELB填充的,我认为可能会将最后一个X-Forwarded-IP
(在这种情况下,它是伪造的)设置在数组的末尾。 - SomeGuyOnAComputer返回这些IP的数组,按照上游->下游的顺序排序
参考 - Gabriel BleuX-Forwarded-For
没有普遍认可的标准,nginx与ELB相反。请参见:https://github.com/koajs/koa/issues/1094#issuecomment-345861282 - Ming