在Heroku Cedar上,我想获取客户端的IP地址。第一次尝试:
ENV['REMOTE_ADDR']
当然,这是行不通的,因为所有请求都是通过代理传递的。因此,另一种选择是使用:
ENV['HTTP_X_FORWARDED_FOR']
但这不太安全,不是吗?
如果它只包含一个值,我接受这个。如果它包含多个值(逗号分隔),我可以采用第一个值。
但是如果有人操纵了这个值呢?我不能像对ENV['REMOTE_ADDR']
那样信任ENV['HTTP_X_FORWARDED_FOR']
。而且我也没有可以使用的可信代理的列表。
但是,必须有某种方法来可靠地获取客户端的IP地址。你认识一个吗?
在their docs中,Heroku描述了X-Forwarded-For
是“连接到Heroku路由器的客户端的原始IP地址”。
这听起来好像Heroku可以用原始的远程IP覆盖X-Forwarded-For
。这可以防止欺骗,对吧?有人能证实这一点吗?
https://stackoverflow.com/questions/18264304
复制相似问题