Карта доступна только для веб-сервера, но не для других пользователей - PullRequest
0 голосов
/ 24 ноября 2011

На моем сайте я использую много включений, большинство включений должно быть доступно только для веб-сервера, а не для остального мира.Поэтому, если я добавлю «../include_map/file.php» на страницу моего сайта, не будет возможности запрашивать URL-адреса других пользователей в мире («website.com/include_map/file.php»).,Можно ли защитить карту с помощью включаемых файлов, чтобы файлы могли включать только веб-сервер?

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

PHP может включать файлы отовсюду (также непубличные каталоги) на жестком диске серверов.

например, если ваш htdocs находится в / var / www / domain / htdocs / вы также можете включать файлы, расположенныев / var / www / domain / include_map, в то время как веб-серверу не будет разрешено читать оттуда (если он настроен правильно).

Вы можете затем проверить доступ к файлу с www.yourdomain.com/../include_map/file.php.если вы все еще можете получить к нему доступ таким образом, конфигурации вашего веб-сервера необходимо уделить внимание тому, чтобы другие не могли читать ваши журналы и другие вещи.

Другой способ - запретить доступ к каталогу через .htaccess или apache config.php по-прежнему может включать файлы, в то время как пользователи не могут получить к ним доступ из Интернета.

в конфигурации apache вы можете сделать что-то вроде:

<Directory /inlcude_map>
   Order Deny,Allow
   Deny from all
</Directory>

в файле .htaccess, который вы можете написать

Order Deny,Allow
Deny from all

Файл .htaccess должен находиться в каталоге, который вы хотите защитить.Проконсультируйтесь у своего сервера, чтобы выяснить, какой путь лучше для вас.Как указано в комментарии, вы должны сначала выяснить, подходит ли вам .htaccess.

0 голосов
/ 24 ноября 2011

Ты можешь сделать, как сказал Зуло. Если вы хотите, чтобы это работало при любых условиях, вы можете использовать константу для этого.

Файл, включающий:

define('IS_APP', true);
require_once('some/file/to/include.php');

// your code here

Включенный файл:

if(!defined('IS_APP')) {
   die('No direct access');
}

// your code here
...