#php
#php
Вопрос:
Я загрузил скрипты на серверы пользователей. Я не хочу, чтобы другие получали доступ к этому скрипту через браузер, однако я хочу, чтобы скрипт мог получить к нему доступ.
Размещение файла за пределами public_html здесь не вариант, потому что он действительно должен быть в public_html. Есть идеи??? Спасибо.
Комментарии:
1. Почему это должно быть в public_html?
2. @Fosco операция, вероятно, находится на каком-то сервере, у которого есть права пользователя только на
public_html
Ответ №1:
Поместите некоторую переменную перед include, чтобы вы знали, где она вызывается:
index.php:
$open = true;
include 'open.php';
open.php:
<?php
if(isset($open) amp;amp; $open){
//do what it is supposed to do
}
else {
header("HTTP/1.1 403 Forbidden");
exit;
}
?>
Комментарии:
1. Я собираюсь проголосовать за это, поскольку теперь, когда вы опубликовали это, я думаю, что это то, что они имели в виду (но были немного расплывчатыми). Аналогично тому, что делают большие проекты, такие как phpBB, это позволило бы другим скриптам включать его, но без прямого доступа.
2. Я делаю это постоянно.. очень аккуратное и эффективное решение
3. @Neal Как добиться этого в Laravel Framework 5.3? Мне нужно добиться того же, но поскольку это фреймворк, я не знаю, как я могу сделать переменную вещь в представлении или контроллере и запретить заголовок с 403
4. Понятия не имею @MurlidharFichadia
Ответ №2:
Если под скриптами вы подразумеваете серверную часть, вы можете добавить .htaccess
файл в соответствующую папку:
deny from all
Однако, если под скриптом вы подразумеваете клиентскую часть, то в конечном счете вы не можете.
Ответ №3:
Вы могли бы сделать путь доступным только для прошедших проверку подлинности клиентов и предоставить учетные данные только вашему скрипту.
Если к нему нужно получить доступ через браузер, то и пользователи, и скрипты являются «клиентами», и вы не можете различать их (за исключением использования надуманных трюков, таких как прослушивание пользовательского агента и т.д.)
Ответ №4:
Создание файла, доступного пользователям или скриптам, в значительной степени синонимично. Вы не получите одно без другого. Пользователи всегда могут имитировать скрипты.
Ответ №5:
Включенный php-файл, который вы хотите сохранить подальше от пользователей, может быть размещен за пределами вашего DOCUMENT_ROOT
и по-прежнему включаться в другие ваши скрипты.
Таким образом, включенный php-файл никогда не будет доступен вашим веб-пользователям. На самом деле это хороший защищенный способ хранения ваших учетных данных для подключения к базе данных.
Ответ №6:
Лучший способ сделать это — поместить его за пределы каталога public_html. Не должно быть никаких причин, по которым он должен находиться в каталоге public_html, если только ваш скрипт собирается получить к нему доступ.