2012-02-29 4 views
0

나는 iframe으로 보내는 페이지가 있습니다. iframe 자체는 백엔드의 로직을 기반으로 조건부로 표시됩니다. iframe 만 페이지를 표시 할 수 있습니까?페이지를 선택적으로 표시

기본적으로 iframe 내에서 페이지를 호출 할 수 있기를 원하지만 URL에 직접 액세스하는 사용자는 리디렉션되거나 차단됩니다.

답변

1

Referer 헤더를 확인하고 iframe이 포함 된 문서의 URL과 일치하는 경우에만 페이지를 제공 할 수 있습니다. 그러나 이것은 사용자가 우연히 직접 URL을 브라우징하는 경우에만 적용됩니다. 일반적으로 대답은 아니오입니다. 사용자 에이전트가 콘텐츠를 표시하는 방법을 제어 할 권한이 없습니다.

정말 필요한 경우 부모 문서를 동적으로 생성하여 임의의 일회용 토큰이 포함 된 iframe의 URL을 포함하도록합니다. 페이지를 전달하기 전에 일회용 토큰의 유효성을 확인하고 동시에 데이터베이스에서 토큰을 삭제하는 스크립트로 iframe 콘텐츠를 생성하십시오. iframe 내용을 캐시 할 수 없게 만들어야하고 캐싱과 관련된 부작용이 발생하여 페이지가 적법한 사용자를 위해 때때로 중단 될 수 있습니다.

+0

"이 링크는 사용자가 직접 URL을 탐색하는 경우에만 적용됩니다"라고 말하면 페이지에 액세스 할 수있는 다른 방법은 무엇입니까? –

+0

'Referer' 헤더를 쉽게 위조하여 페이지에 직접 액세스 할 수 있습니다. – Celada

0

iframe의 URL이 http://example.com/myiframepage 인 것으로 가정합니다. -


    //in parentpage : 
    if(can_show_iframe) { 
     
    } 
당신은 단지 다음과 같이 단계 더 나아가 myiframepage에 대한 코드를 수정해야

: iframe을 렌더링 페이지는 이미 유사한 코드를 가지고 나는 당신의 상위 페이지를 가정하고 http://example.com/parentpage

입니다


    //in myiframepage 
    if(can_show_iframe) { 
    //normal processing 
    } 
    else { 
    //return 403 error code which indicates access denied 
    } 
+0

답변 해 주셔서 감사합니다. 내 질문에 누군가가 가서 자신의 브라우저에 URL을 입력하거나 iframe 외에도 일부 방법으로 페이지에 액세스하려고 시도했음을 의미합니다. –

관련 문제