2012-06-25 2 views
1

웹 루트 폴더에 이미지 저장 공간을위한 files 디렉토리가 있습니다. 폴더를 보호하는 방법을 알고 싶습니다. 나는 사람들이 그 폴더에 스크립트를 업로드하는 것을 막습니다. 파일 확장자를 확인합니다. 이미지가 아니라면 그 폴더에 저장되지 않습니다.스크립트가 디렉토리에서 실행되지 않도록하려면 어떻게합니까?

하지만 확장 누군가가 브라우저에서

그래서 내가에만 허용하고 해당 폴더 내에서 실행되는 스크립트를 방지 할 수있는 방법이 필요하다는 것을 내 파일 디렉토리에 액세스 할 수있는 스크립트를 업로드 관리하는 경우 무슨 일이 쉽게 이루어집니다 날조 실행할 이미지.

나는 htaccess가 그것을 할 수 있다는 것을 알고 있지만 그것을 설정하는 방법을 모른다. 내 htaccess로 파일은 다음과 같다 :

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi 
Options -ExecCGI 
ForceType application/octet-stream 
<FilesMatch "(?i)\.(gif|jpe?g|png)$"> 
    ForceType none 
</FilesMatch> 
Options All -Indexes 

하지만이 작동하지 않습니다, 나는 다음 브라우저에서 접근을 시도하고 난 여전히 액세스 할 수 폴더에 PHP 파일을 저장. 이 일을하는 법을 아십니까? 또는 이것에 대한보다 안전한 접근 방법이 있다면 알려주십시오.

, 당신은 다른 핸들러를 제거하지 않은 당신은 여분의 핸들러를 추가해야하기 때문에 그것이 작동하지 않는 생각

답변

1

감사합니다.

이 포함되어 있습니다 (오히려 경기 지시어 덤비는보다) 보호하고자하는 폴더에 다른 htaccess로 파일을 넣어하는 것이 가장 쉬운 방법입니다 : PHP와 CGI를 포함

# Fix PHP, you should do matching commands for JSP and ASP, & html 
RemoveType application/x-httpd-php php 
# .... add the other remove-handler statements here .... # 

# Optionally make these equivalent to text files. 
# UPDATE: Taken this out as you dont want people to see PHP files at all 
#AddType text/html php 

# To disable cgi and server side includes & indexes 
# You need to check the setup of Apache, some of the file types 
# listed should already be handled as CGI (.pl, .py, .sh) 
Options -ExecCGI -Includes -Indexes 

# Completely block access to PHP files 
<FilesMatch "\.(php|phps|html|htm|jsp|asp)$"> 
    Order allow,deny 
    Deny from all 
</Files> 
# Add in any additional types to block 

, 당신은 명령을 일치해야 JSP 및 ASP 용

업데이트 : PHP 파일에 대한 액세스를 완전히 차단하는 코드가 추가되었습니다. - 미안하지만 처음에는 단순히 실행하지 않을 것을 생각했습니다. 또한 PHP 파일을 텍스트 파일로 바꾸는 줄을 주석 처리했습니다.

+0

모든 설정을 하나의 파일로 유지하려면 똑똑한 일치 지시문이 필요하지 않습니다. 위의 config 지시문을 구성 할 디렉토리를 나타내는 블록 안에 넣으십시오. – Cheekysoft

+0

Correct @Cheekysoft. 나는 일반적으로 .htaccess 파일을 그들이 속한 폴더에 넣는 것을 선호한다. 더 나은 방법은 아파치에 접근 할 수 있다면 그것들을 적절한 아파치 설정 파일에 넣는 것이다. –

+0

파일 디렉토리의 .htaccess 파일에서 코드를 사용하려고했지만 여전히 .php 파일에 액세스 할 수 있습니다. –

관련 문제