Создание файла, доступного скриптам, но не пользователям

#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, если только ваш скрипт собирается получить к нему доступ.