2009-09-28 5 views
3

우리 응용 프로그램 중 하나가 salesforce 내부의 iframe에서 실행되며 referer에 액세스하는 데 문제가 있습니다. 저희는 요청을 salesforce에서 받고 있는지 확인하기 위해 일부 리퍼러 수표를 보내고 확인할 IP 주소를 제공하기를 원합니다.iframe referer question - asp.net C#

HttpContext.Current.Request.ServerVariables["HTTP_REFERER"] 
HttpContext.Current.Request.UrlReferrer 

그것은 나를 null을 반환 :

내 문제는 다음 두 가지 방법 중 하나를 통해 리퍼러를 액세스하려고이 언제입니다.

어떻게 아이디어를 얻을 수 있습니까?

추신 : 나는 당신이 리퍼러를 속일 수 있다는 것을 알고 있지만 요구 사항의 일부입니다.

답변

1

질문을 올바르게 이해하면 귀하의 웹 페이지에 IFrame을 삽입하여 귀하의 사이트를 가리키는 클라이언트 사이트가 있습니다. 요청이 지정된 사이트 집합의 일부인 호스트 페이지에서 오는 것인지 "확실하게"확인하려고합니다. 지정된 사이트 집합은 일련의 IP 주소로 설명됩니다. 그걸 커버합니까?

까다 롭습니다. 첫째로, 당신은 referer가 있다고 가정합니다. 호스트 이름을 알아야합니다 (Uri 유형을 사용하면 충분합니다). 그런 다음 DNS를 사용하여 호스트 이름의 IP 주소를 확인해야합니다 (.NET 프레임 워크에서는 그리 어렵지 않음).

물론 리퍼러를 얻어야하며 이는 가장 까다로운 부분입니다. 브라우저는 요청에 항상 리퍼러 헤더를 두지는 않습니다. 이는 특히 심판 주소가 리퍼러와 동일한 도메인에 있지 않은 경우에 해당됩니다. IOW, 이것은 showstopper입니다.

이 문제를 해결하는 더 좋은 방법은 해시 기반 인증을 사용하는 것입니다 (스푸핑되기 쉽지 않음). 너무 정교하지 않아도됩니다 (원래 요구 사항으로 인해 리퍼러 테스트가 충분하다고 느낀 경우).

+0

Anthony에게 감사드립니다. 정확히 그 경우와 정확히 내가 생각한 생각입니다. 그러나 나는 사소한 것을 놓치지 않으려 고했습니다. –

+0

XFrameOptions를 사용하면 특정 상위 iframe 페이지 만 허용 할 수 있습니다. –

1

리퍼러는 링크를 통해 페이지를 요청한 경우에만 표시됩니다. 페이지가 열리면 브라우저의 주소 표시 줄에서 직접 주소를 입력하여 (또는 IFRAME의 src.를 설정 한 경우) 참조자가 비어있게됩니다.

+0

의견을 보내 주셔서 감사합니다. –