2010-07-25 5 views
3

다른 "승인 된"도메인에 내 사이트로 다시 연결하고 싶습니다. 링크를 클릭하면 리퍼러 ($ _SERVER [ 'HTTP_REFERRER'])가 내 링크가 승인 된 도메인에서 왔는지 확인하는 페이지로 이동합니다. 이것은 스푸핑 될 수 있으므로 클릭이 실제로 승인 된 도메인에서 오는 것인지 어떻게 확인할 수 있습니까?PHP 리퍼러 : 요청이 실제로 어디에서 왔는지 확인하는 방법

답변

8

할 수 없습니다. 리퍼러가 조정되는 것을 막을 수는 없습니다.

여러 사이트 간 공동 작업이 가능하면 다른 방법이 가능합니다. 예를 들어, 다른 사이트의 링크를 사용하면 한 번만 사용할 수있는 URL의 매개 변수로 토큰을 전달할 수 있습니다. 그런 다음 유효성을 검사 할 수 있습니다.

몇 가지 유효화 전략이 가능할 것입니다. 귀하의 사이트는 다른 사이트에 연락하여 전달 된 토큰이 유효한지 또는 토큰을 nonce로 사용하는 서명을 사용하여 다른 사이트에 연락하지 않아도되는지 물을 수 있습니다.

+1

사실, 같은 내용을 쓰고있었습니다. 제휴사 등은 일반적으로 쿠키를 앞뒤로 수신 거부하여 유효성을 검사 할 수있는 URL에 매개 변수를 가져오고 어떤 의미가 쉽게 깨질 수 없는지 (URL 및 소금 등을 통한 해시)이를 해결합니다. – Wrikken

+1

서명 생성 및 유효성 검사는 OAuth가 수행하는 것과 유사합니다. OAuth 라이브러리의 코드를 사용하여 확인할 수도 있습니다. 부실 링크의 재사용을 막기 위해 확인할 수있는 URL에 타임 스탬프 매개 변수가 있는지 확인하십시오. 사람들이로드 된 후 잠시 동안 링크를 클릭하는지 확인하거나, 생성 된 URL에 실제로 리다이렉트하여 만료 시간을 훨씬 단축 할 수 있습니다. – Nick

+0

timestamp 기반 nonce를 사용하는 것은 좋은 전략입니다. 왜냐하면 미래에 거부 한 모든 nonce를 저장할 필요가 없기 때문입니다. 예를 들어 보았던 것만 저장할 수 있습니다. 마지막은 3 시간을 말하고 더 오래된 것을 모두 거절합니다. 작은 시간대에 일부 재사용 토큰을 함께 살 수 있다면 전혀 저장할 수 없습니다. – Artefacto

관련 문제