Я хочу запретить людям доступ к моим php-страницам напрямую с помощью .htaccess - PullRequest
1 голос
/ 07 мая 2010

У меня есть сайт, который состоит из php-страниц, но они предоставляются пользователю через включения, основанные на том, что, я думаю, им нужно. если они могут угадать имя php-файла, они могут получить доступ к этим страницам. хотя это вовсе не угроза безопасности, я предпочел бы найти способ перехватить их и перенаправить в другое место.

Я действительно хочу, чтобы все проходило через индексную страницу, если только это не файл, который существует (за исключением файлов, заканчивающихся на .php).

Я попробовал это, не работает:

RewriteEngine on
RewriteCond %{REQUEST_URI} !(.*\.php$) [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule .* /n/index.php [NC]

Ответы [ 4 ]

4 голосов
/ 07 мая 2010

Может быть, вы можете поместить файлы php в каталог вне веб-пути?

3 голосов
/ 07 мая 2010

Один из способов справиться с этим - определить константу на странице, используя:

define("access", "legitimate");

Затем в начале каждого включенного файла:

if(!defined('access')){
    header("Location:index.php");
    die(); // make sure to call die() or the rest of the page will be parsed
}

Это способ, которым многие фреймворки и CMS справляются с этой проблемой (от всей души, Joomla! И CodeIgniter) - вам не нужно возиться с .htaccess, и он также будет работать на различных хостинговых платформах.

1 голос
/ 07 мая 2010

Я думаю, что-то вроде этого будет работать для вас:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
RewriteRule \.php$ index.php [L]
0 голосов
/ 07 мая 2010
RewriteEngine on
RewriteCond %{REQUEST_URI} .*\.php$ [NC]
RewriteRule !^index\.php$ error.php

Это работает для меня, и похоже, что должно делать то, что вы хотите. Размещение сценариев, к которым вы не хотите иметь прямой доступ за пределами веб-пути, является лучшим ответом - для этого не требуются специальные правила (которые могут позже нарушиться и потребовать изменения) или расширения.

...