2011-01-06 8 views
0

에 .PHP로 끝나는 URL을 리디렉션 :htaccess로는 지금까지 다음과 같이 내 htaccess로를 설정 한 인덱스

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?page=$1 [QSA] 

내 index.php에이 페이지 /에서 예를 파일을로드합니다. index.php? page = home은/home.php 페이지의 페이지 내용을로드합니다.

그러나 누군가가 페이지/home.php로 이동하면 페이지가 머리글 등없이로드되어 바람직하지 않습니다. .php로 끝나는 URL을 리디렉션하여 사용자를 홈페이지로 이동시키기 위해 추가 할 수있는 항목은 무엇입니까? ^(.*)\.php$에 대한

감사

+2

페이지 디렉토리에 배치 된. htacess에서'거부 모든 것'. –

+0

난이 코드에 포함 주사를 두려워하고 싶습니다 ... –

+0

전체에서 거부 - 그 트릭을 마쳤습니다. 당신이 주입을 포함한다고 말할 때 - 좀 더 구체적으로 표현할 수 있습니까? 감사합니다 – Freddie

답변

1

별도한다 RewriteRule은 (파일 상태로 존재하지 않고) 작동합니다. 하지만 사람들이 .php에 직접 액세스하려고하는 이유는 무엇입니까? 정당한 이유가 없으면 디렉토리에있는 Deny가 아마도 더 나은 방법 일 것입니다. (같은 그리고, @ 중령 파편 코멘트, 당신이 당신의 페이지 이름을 필터링하고 희망 주입을 포함 조심...)

이 편집 : 주입을 포함한다 : 누군가가 당신에게 흥미로운 페이지 이름을주는 경우 발생하는 고려 , page=http://foo.com/exploit과 같은 스크립트가 실행됩니까? page=/etc/passwd 또는 page=/../../../etc/passwd은 암호 파일을 출력합니까? page=`mysqldump …`, 데이터베이스 복사본을 제공합니까? 보안 팁 위

RewriteCond %{REQUEST_URI} \.php$ 
RewriteRule ^(.*/)?([^/]*)\.php$ /index.php?page=$2 [R=301,L] 

참고 :

+0

모든 것을 거부합니다. 문제를 해결했습니다. 감사합니다 – Freddie

+0

@include injection 편집 : 아, 걱정하지 마세요. basename() 및 file_exists()를 사용합니다. SQL 인젝션 기회가 없습니다. 도움을 주셔서 감사합니다. – Freddie

0

pages/anything.phpindex.php?page=anything로 리디렉션합니다. 주사를 포함 나쁜 ..