2010-07-15 5 views
0

내 목표는 사용자가 업로드 한 파일 (주로 PDF)을 호스트 웹 사이트의 링크를 통해서만 다운로드 할 수있게하는 것입니다.Safari PDF 뷰어가 리퍼러를 인식하지 못합니까?

나는 사용자가 업로드 한 파일을 uploads 디렉토리에있는 .htaccess 파일로 보호했다. .htaccess는 하드 코딩 된 도메인 이름에 대해 리퍼러를 확인하고 리퍼러가 일치하면 액세스를 허용합니다. 그렇지 않으면 액세스가 거부됩니다.

Safari의 PDF 파일 링크를 따르는 경우를 제외하고는 정상적으로 작동합니다. 사파리는 브라우저에서 열려고 시도하고, 이후 리퍼러가 올바르더라도 거부됩니다.

Safari 사용자가 올바른 위치에서 올 때이 파일을 볼 수있게하려면 어떻게해야합니까?

답변

0

Referer (sic) 헤더는 기껏해야 신뢰할 수 없습니다. 그것을 사용할 때, 나는 뻔뻔스럽게 틀린 참조자를 가진 사용자만을 허용하지 않을 것입니다. '참조 형 (referrerless)'요청은 완전히 합법적 일 수 있으므로 통과해야합니다.

Safari가 차단되었지만 귀하가 수행 한 유일한 수표 인 경우 리퍼러가 정확하다고 주장합니다. 논리적으로 참조자는 올바르지 않습니다. 액세스 및/또는 아파치의 오류 로그에는 무엇이 있습니까?

나는 세션 (또는 의사 세션)으로 해결할 수도 있고, 원격 IP 주소를 기반으로 임시 (비어있는) 파일을 만들 수도 있으며 세션의 존재 또는 IP 관련 임시 파일.

+0

나는 세션 존재를 확인 하겠지만 링크를 클릭하고 파일을 여는 사이에 PHP 코드가 실행되지 않습니다. 즉, 세션 변수를 검사하면 .htaccess에서 수행해야합니다. , 아니? 가능한지 확실하지 않습니다. – Chase

+0

기본 파일 기반 세션이있는 경우 세션의 이름은 쿠키 다음에 지정됩니다. 쿠키 값이 sesssion-dir에 파일로 존재하는지 여부를 감지하는 것이 가능할 수도 있습니다. 아마도 SetEnv로 약간 만만치 않습니다. – Wrikken

관련 문제