2010-04-04 2 views
1

사용자가 디지털 콘텐츠를 구입하고 보안 다운로드를 제공하는 방법을 구현할 수있는 사이트를 만들고 있습니다. 나는이 같은 다운로드 강제로 CodeIgniter를 사용하고htaccess 및 php를 사용하여 파일 액세스를 보호 하시겠습니까?

: 물론

$file = file_get_contents($path); 

force_download("my_file_name.zip", $file); 

, 나는 사용자가 다운로드를 제공하기 전에 데이터베이스를 사용하여 파일에 액세스 할 수 있는지 확인하지만이 있다면 궁금 해서요 이러한 파일을보다 안전하게 만드는 방법.

파일 경로를 만들기 위해 8-10 자의 문자 키를 사용하고 있습니다. 따라서 파일에 대한 URL은 알아 내기가 쉽지 않으므로 http://mysite.com/downloads/my_file.zip 대신 http://mysite.com/as67Hgr/asdo0980/uth89.zip과 같습니다.

또한 .htaccess를 사용하여 디렉토리 검색을 거부합니다 (예 : Options All -Indexes).

그 외 ... 어떤 조치를 취해야하는지 잘 모릅니다. .htaccess를 사용하여 사용자 이름과 암호 방법을 제안하는 기사를 보았습니다. 그러나이 방법을 사용하여 발생할 암호 프롬프트를 우회하는 방법을 이해하지 못합니다.

머리글과 cUrl (또는 이와 비슷한)을 사용하여 사용자 이름과 암호 조합을 보낼 수있는 방법이있을 것으로 기대했지만 어디서부터 시작해야할지 모를 것입니다.

도움이 매우 감사 할 것입니다. 미리 감사드립니다!

답변

4

웹 서버가 어떤 상황에서도 파일을 제공하지 않도록 설정하십시오. 그렇지 않으면 모든 검사가 상당히 문제가됩니다. 이를 수행하는 가장 좋은 방법은 웹 루트 외부의 어딘가에 배치하는 것입니다. 예 :

/ 
    webroot/   <- root web directory, maybe named www or similar 
    index.php  <- your app, served normally 
    …other serve-able files… 
    files/   <- not part of the serve-able webroot dir 
    secret_file <- web server has no access here 

그런 다음 스크립트를 통해 액세스하는 유일한 방법은 스크립트 작성만큼 안전합니다.

+0

나는 그런 생각조차하지 못했습니다. 위대한 작품, 그리고 말했듯이, 파일을 제공 할 수없는 직접 URL을 통해. 무리 감사. – bschaeffer

1

.htaccessDeny from All을 입력하지 않으시겠습니까? 또는 webroot 위에 파일을 배치 하시겠습니까? 그 정도면 충분합니다. 그러나 현재의 설정은 이미 매우 안전합니다. 왜 도움이 필요하다고 생각하니?

+0

는 내가 전에 사례별로 파일을 제공하지 않습니다 단지 적이과 그와 관련된 표준 관행이 있다면 궁금 해서요. – bschaeffer

0

.htaccess는 로컬 호스트에서만 다운로드 할 수 있도록하려면 다음과 같이 표시되어야합니다. 또한 경우에 따라 파일에 액세스하려고 시도 할 수있는 핸들러를 제거합니다. 그렇게하면 당신 만이 그것에 접근 할 수 있습니다. 또한 다른 파일의 존재를 검사하는 index.php 파일을 저장하는 것이 좋습니다. 존재하는 경우 헤더를 설정하고 그렇지 않은 경우 종료하십시오.

htaccess로 파일 :

<Files *> 
    Order Deny,Allow 
    Deny from all 
    Allow from localhost 
</Files> 

RemoveHandler .php .php3 .phtml .cgi .fcgi .pl .fpl .shtml 
+1

매우 재미 있고, 하하 :) –

+0

나는'Allow from localhost' 행을 생략 할 수 있다고 생각한다. http://httpd.apache.org/docs/1.3/mod/mod_access.html#allow – Dor

+0

127.0.0.1을 사용한다. :) – SoLoGHoST

관련 문제