Скрыть * .inc.php от посетителей сайта - PullRequest
1 голос
/ 21 мая 2010

У меня есть скрипт myscript.inc.php, который обрабатывает все URL, похожие на / script-blah Я делаю это с помощью следующего .htaccess

RewriteEngine On 
RewriteRule ^script-(.*)$ myscript.inc.php?s=$1 [QSA,L]

Однако пользователи также могут получить к нему доступ, набрав /myscript.inc.php?s=blah Я хотел бы предотвратить это. Я пытался

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

и

RewriteCond %{REQUEST_URI} \.inc\.php
RewriteRule .* - [F,L,NS]

Они оба запрещают пользователям просматривать /myscript.inc.php?s=blah, но также заставляют / script-blah возвращать 403 ...

Есть ли способ сделать это правильно?

Ответы [ 3 ]

5 голосов
/ 18 марта 2012

Я использую следующий метод для защиты моих файлов .inc.php. Добавьте следующее в ваш .htaccess:

#Prevent Users From Accessing .inc.php files in .htaccess
<Files ~ ".inc.php$">
Order allow,deny
Deny from all
</Files>
3 голосов
/ 21 мая 2010

Вы также можете попробовать следующее (это делают несколько пакетов с открытым исходным кодом)

  • поместите пробел index.html в каждую папку
  • используйте это правило в .htaccess для блокировки чтения папки Options -Indexes
  • поместите строку, которая умирает скрипты, где глобальная константа не найдена

Например, вот Кохана"выбросить недопустимый доступ". Это первая строка во всех файлах PHP.

<?php defined('SYSPATH') or die('No direct script access.'); ?>

Эта строка в основном говорит: «Если не включить через index.php, где определен SYSPATH, мы прервем сценарий и покажем дружественное сообщение»

0 голосов
/ 22 мая 2010

Вы можете перенаправить, если это имя файла

RewriteCond %{REQUEST_FILENAME} =-f 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...