запретить прямой доступ к php include - PullRequest
0 голосов
/ 11 августа 2009

У меня есть скрипт php PayPal eStores / dl_paycart , но он имеет PayPal eStores "settings.php" Уязвимость обхода безопасности

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

Поможет ли это?

defined( '_paycart' ) or die( 'Access to this directory is not permitted' );

Спасибо

Ответы [ 4 ]

1 голос
/ 11 августа 2009

Проблема в том, что если кто-то может использовать «include» и читать содержимое кода, переменные и т. П., Это означает, что они уже работают на одном сервере и, если быть немного грубым, вы костей, если они попытаются напортачить с тобой.

С другой стороны, если вы хотите запретить внешний доступ к файлу с удаленного сервера, то вызов include может получить только те значения, которые будут отображаться на любом внешнем сайте (и, если возникает вопрос, " Могу ли я запретить внешним сайтам даже загружать этот файл удаленно », ответ -« через настройки сервера в файлах http.conf и .htaccess »).

Однако, если говорить коротко, то это не то, что действительно можно исправить с помощью PHP, это проблема безопасности сервера.

1 голос
/ 11 августа 2009
  1. Тот факт, что скрипт имеет расширение .php, обеспечивает некоторую защиту - любой вызов http или https для этого файла будет проходить через веб-сервер, который будет выполнять php, перед обработкой запроса. 1004 *

  2. Я бы порекомендовал переместить скрипт в каталог в вашем общедоступном веб-каталоге и поместить в него каталог .htaccess, который либо блокирует все запросы, либо требует пароль для доступа к нему. Затем включите сценарий, когда это необходимо для сценариев, в общий каталог. См. Учебник Apache .htaccess

1 голос
/ 11 августа 2009

Я настоятельно рекомендую найти какой-нибудь новый скрипт. Любая блокировка - это просто воткнуть палец в плотину; это не постоянное решение, и в конце концов оно сломается.

Если вы действительно хотите его использовать, проверьте файлы htaccess, в частности «Order Allow, Deny» и «Deny from All»

0 голосов
/ 11 августа 2009

Наверное, самый безопасный способ - что-то вроде этого

$allowed_files = array("/paths/", "/that/", "/are/", "/allowed/");
if(!in_array($_SERVER['PHP_SELF'], $allowed_files))
{
    die("Not Allowed");
}

Заполните массив файлами, к которым вы хотели бы иметь доступ. (Возможно, вам придется получить доступ к PHP self на каждой странице, которую вы хотите, скопировать и вставить ее). Это проверит, чтобы убедиться, что исполняемый файл является одной из разрешенных страниц. Если это не так, сценарий умрет.

Я верю, что $ _SERVER можно изменить, но, вероятно, не удастся. Этот файл все еще можно будет получить с помощью fopen или file_get_contents, и если кто-то прочитает его, он будет знать, что изменить.

Но я бы предупредил, что это не «полностью безопасно», потому что на самом деле нет способа сделать что-то «полностью» безопасным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...