2013-08-16 2 views
19

Heroku Cedar에서 클라이언트의 IP를 얻고 싶습니다. 첫 번째 시도 :Heroku에서 클라이언트의 실제 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을 덮어 쓸 수있는 것처럼 들립니다. 이것은 스푸핑을 방지합니다. 누군가 이것을 확인할 수 있습니까?

+0

죄송하지만 어떤 언어입니까? 그것이 파이썬이 아니면 파이썬에서 어떻게합니까? – Cubetastic

답변

관련 문제