2010-04-21 6 views
59

내 파일 (pdf, doc, flv 등)을 버퍼에로드하고 스크립트를 사용하여 사용자에게 제공합니다. 파일에 액세스 할 수 있지만 직접 액세스 할 수 없도록 스크립트가 필요합니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까? 내 권한으로 뭔가를하고 있거나 .htaccess로 디렉토리를 잠그고 있어야합니까?http를 통해 파일에 대한 직접 액세스를 차단하지만 PHP 스크립트 액세스 허용

+0

당신이 [이]에서 봐 가지고있다 다음 아파치

service httpd configtest 

를 다시 시작하기 전에 설정을 테스트 [1] [1] : http://stackoverflow.com/q/43951871/2441637 –

답변

77

가장 안전한 방법은 Damien이 제안한 것처럼 웹 루트 디렉토리 외부에 보관하려는 파일을 저장하는 것입니다. 이것은 웹 서버가 로컬 파일 시스템 권한을 따르며 자체 권한이 없기 때문에 작동합니다.

그러나 웹 루트에만 액세스 할 수있는 호스팅 업체가 많이 있습니다. 여전히 파일에 대한 HTTP 요청을 방지하려면 모든 통신을 차단하는 .htaccess 파일을 사용하여 디렉토리에 직접 넣으십시오. 예를 들어,

Order deny,allow 
Deny from all 

웹 서버, 따라서 서버 측 언어는 여전히 디렉토리의 로컬 권한은 웹 서버가 읽고 파일을 실행할 수 있기 때문에이를 읽을 수 있습니다.

건배.

+0

나는이 내부 오디오 폴더를 사용했지만 오디오 재생을 위해 오디오 플레이어를 중지하고 있습니다.사운드 매니저 2를 사용하여 오디오를 재생하고 있습니다. 사운드 관리자 만 오디오 파일을 재생할 수 있지만 다른 직접 액세스를 중지 할 수있는 해결 방법이 있습니까? – sonill

+3

@sonill - 특정 IP를 화이트리스트로 나열하면이 디렉토리에 액세스 할 수 있습니다. 예를 들어'Allow from 127.0.0.1'라는 줄을 추가하면 서버 쪽 코드를 포함하여 서버가 해당 디렉토리의 파일에 액세스 할 수 있습니다. http://httpd.apache.org/docs/2.4/mod/mod_access_compat.html#allow –

+1

"에서이 비트에 대한 자세한 설명서를 볼 수 있습니다. 그러나 웹 루트에만 액세스 할 수있는 호스팅 업체는 많이 있습니다. " 왜 그 회사는 웹 루트를 FTP 루트보다 한 단계 낮게 설정할 수 없습니까? 그들은 PHP가 어떻게 작동하는지에 대한 지식이 없습니까 (아니면 오히려 더 많은 감독이 되는가), 아니면 보안과 돈만 신경 씁니까? 아 글쎄, 실제로 웹 사이트 보안에 대한 저주를주는 회사를 선택하십시오. – FluorescentGreen5

2

파일이 PHP 스크립트와 동일한 서버에 있습니까? 그렇다면 웹 루트에서 파일을 지키고 PHP 스크립트가 어디에 저장되어 있는지 읽을 수있는 권한이 있는지 확인하십시오.

28

URL에서 내 ini 파일에 직접 액세스하지 못했습니다. 루트의 .htaccess 파일에 다음 코드를 붙여 넣습니다.

<Files ~ "\.ini$"> 
    Order allow,deny 
    Deny from all 
</Files> 

settings.ini 파일이 루트에 (필요는 별도의 폴더를 만들 수 없습니다), 당신은 아파치 당신에 액세스 할 수있는 경우이 코드없이 접근 할 수 www.mydomain.com/settings.ini

1

입니다. conf 파일 (우분투의 경우/etc/apache2 디렉토리에 있음)의 경우 특정 디렉토리에 .htaccess 파일과 동일한 행을 추가해야합니다. 즉 (예를 들어)입니다 :

ServerName YOURSERVERNAMEHERE 
<Directory /var/www/> 
AllowOverride None 
order deny,allow 
Options -Indexes FollowSymLinks 
</Directory> 

당신이 정보를 제어 할 모든 디렉토리에 대해이 작업을 수행, 당신은 모든 액세스를 관리하기 위해 한 자리에 하나 개의 파일이있을 것이다. 위의 예에서, 나는 루트 디렉토리 인/var/www에 대해이 작업을 수행했습니다.

이 옵션은 아웃소싱 호스팅, 특히 공유 호스팅에서 사용하지 못할 수 있습니다. 그러나 많은 파일을 .htaccess 개 추가하는 것보다 더 나은 옵션입니다.

2

httpd.conf에서 브라우저를 차단하려면 & wget 액세스를 사용하여 특히 db.inc 또는 config.inc 파일을 포함하십시오. 지시문에 파일 형식을 연결하여 여러 파일 지시문을 만들 수는 없습니다.

<Files ~ "\.inc$"> 
Order allow,deny 
Deny from all 
</Files> 

은 (점잖은 재시작)

service httpd graceful 
관련 문제