предотвращать прямой доступ к php

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

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

Это поможет?

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

спасибо

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

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

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

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

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

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

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

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

 $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, и если кто-то его прочитает, они узнают, что изменить.

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