2012-08-22 3 views
2

내 웹 사이트에 대한 도움이 필요합니다. http://usb-online.fr. 그것은 PHP 파일 호스트 웹 사이트와 여기에 다운로드 물건의 일부 : 당신이 URL을 시도하는 경우PHP 파일 호스팅

header("Content-Type: $mime; name=\"$fichier\""); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: $taille"); 
header('Content-Description: Fichier hebergé par usb-online.fr'); 
header("Content-Disposition: attachment; filename=\"$fichier\""); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 

ob_clean(); 
flush(); 
log_download($file,$infos['auteur'],$taille); 
bunzip2($path); 

: http://usb-online.fr/file-download-822MjYzMg.html 당신은 다운로드 상자가 열려있는 이미지가 표시되지 않습니다 볼 것, 그게 내가 원하는거야 . 하지만 사용자가 웹 사이트에서 <img src="http://usb-online.fr/file-download-822MjYzMg.html"/>을 수행하면 이미지를 표시 할 수 있고 서버가 사용 중입니다. 나는 이것을 허락하고 싶지 않습니다. 어떻게해야합니까? http://usb-online.fr/file-download-822MjYzMg.html

답변

1

나는 당신이 원하는 것을 할 수 있는지 확신하지 못합니다. 브라우저가 URL에 액세스하도록 허용하면 원격 끝에있는 데이터로 수행 할 작업을 제어 할 수있는 방법이 없습니다.

1

당신이 말하는 것은 '핫 링크 (Hotlinking)'라고 불리우는 것입니다.이를 사용 중지하는 방법에는 여러 가지가 있습니다.

여기에는 어떤 종류가 적용되는지 설명되어 있습니다. http://safalra.com/programming/php/prevent-hotlinking/ 그렇지 않으면 Google에서 많이 발견됩니다.

+0

그들은 $ _SERVER [ 'HTTP_REFERER']를 사용합니다. 믿을만하지 않다고 생각했습니다. – timmalos

+0

내가 그랬던 것처럼 나는 할 수 없어, 링크가 포럼이나 이런 물건에 갈 수 있고 파일을 다운로드 할 수 있어야한다. 그래서 내가 말할 수 없다 : referer 있다면 파일을 표시하지 마십시오. – timmalos

1

세션에 nonce를 추가하십시오. 해당 nonce를 보호하려는 이미지의 URL의 일부로 사용하십시오. 이미지에 대한 요청을 받으면 사용자의 넌스가 제공되면 응답하십시오.

nonce는 본질적으로 임의의 비트이고, 숫자 일 수 있습니다. 문자열 일 수 있습니다. Nonce는 종종 CSRF 공격을 막는 데 사용됩니다. 이 경우 새로운 임의의 nonce를 만들어 사용자의 세션에 저장합니다. 이 예제에서는 "asdfgh"를 ​​사용합니다. 그런 다음, yoururl.php에서

<img src="yoururl.php?n=asdfgh"> 

같은 것을 사용 요청에서 n의 값은 사용자의 세션에 저장되어있는 비표 일치하는지 확인합니다. 일치하는 이미지가 없습니다.

+0

미안하지만 영어가 아니며 '넌센스'를 정말로 이해하지 못합니다. 무슨 뜻인지 좀 더 자세히 설명해 주시겠습니까? – timmalos

+0

답변에 nonce에 대한 설명을 추가했습니다. 도움이 되나요? – walrii

+0

Gerald Versluis의 대답을 참조하십시오. 외부 사이트의 파일에 연결할 수 있기를 원하므로 세션이 없습니다. – Barmar

관련 문제