我正在分析一个基于Elastic Load Balancer的公共路由的堆栈,它打开了一个由PM2暴露的端口,PM2使用koa模块启动了一个节点应用程序。目前,IP被记录下来,这只取决于X-Forwarded-For头。如果这个头是使用curl手动创建的,那么应用程序将把它写为IP地址。有没有一种简单的方法来防止欺骗此标头,或者设置AWS的ELB,使其忽略手动插入的标头,或者有没有比欺骗标头更好的方法来获取访问者的真实的IP地址?
X-Forwarded-For
curl
nqwrtyyt1#
根据医生的说法:如果来自客户端的请求已包含X-Forwarded-For标头,则Elastic Load Balancing会在标头值的末尾追加客户端的IP地址。在这种情况下,列表中的最后一个IP地址就是客户端的IP地址。所以最后一个IP永远是真实的IP。
klh5stk12#
从文档中:.负载均衡器将客户端IP地址附加到现有标头并将标头传递到您的服务器。X-Forwarded-For请求标头可能包含多个以逗号分隔的IP地址。最左边的地址是首次发出请求的客户端IP。后面是任何后续的代理标识符,呈链状。第一个IP是正确的客户端IP。
2条答案
按热度按时间nqwrtyyt1#
根据医生的说法:
如果来自客户端的请求已包含X-Forwarded-For标头,则Elastic Load Balancing会在标头值的末尾追加客户端的IP地址。在这种情况下,列表中的最后一个IP地址就是客户端的IP地址。
所以最后一个IP永远是真实的IP。
klh5stk12#
从文档中:
.负载均衡器将客户端IP地址附加到现有标头并将标头传递到您的服务器。X-Forwarded-For请求标头可能包含多个以逗号分隔的IP地址。最左边的地址是首次发出请求的客户端IP。后面是任何后续的代理标识符,呈链状。
第一个IP是正确的客户端IP。