как запретить пользователю доступ к папке в php?

#php #apache #.htaccess

#php #apache #.htaccess

Вопрос:

Я обыскал все, но не смог найти, все, что я хочу знать, это то, что у меня есть папка с именем temp, похожая

->public_html

—> temp

теперь, как мне ограничить доступ пользователя к ней с внешнего сервера, например, это выдает ошибку, когда кто-то включает ее в свой php-скрипт? я хочу сделать это через php, а не через .htaccess или apache я пробовал chmod, но он ограничивает доступ ко всему веб-сайту только с локального сервера. я также использовал константу, но если кто-то знает имя константы, он все равно может извлечь данные.

Комментарии:

1. Я не совсем понимаю, чего вы пытаетесь достичь. Если вы хотите предоставить локальный доступ, но ограничить удаленный доступ, вы должны иметь возможность использовать chmod и chown именно для этого.

2. Как вы «вводите папку в PHP-скрипт»? Обычно вы защищаете папку с помощью .htaccess — PHP не может защитить папку, если это не просто виртуальная папка, созданная с помощью PHP.

3. Что вы подразумеваете под «я сделал постоянную вещь» ?

4. Я тоже не понимаю, что вы пытаетесь, но если вы хотите иметь возможность включать php-файлы из каталога, но не хотите, чтобы они были доступны через URL, есть ряд решений.. одним из самых простых (но и не основанных на php) было бы вывести этот каталог за пределы веб-корня

5. Хорошо, извините за мою ошибку, хорошо, позвольте мне объяснить, как мы включаем php-скрипт, добавив простой include (‘script.php ‘) теперь пользователь может получить доступ к любому из файлов, если он добавит include (‘url.com/temp/script.php ‘) и постоянная вещь, о которой я забочусь, это то, что мы добавляем define(‘Script’, TRUE); в том месте, где мы будем включать скрипт, и скрипт, который мы будем включены, будет иметь, что if(!defined(‘Script’)){ echo «Go back»; } теперь все, что я хочу, это чтобы локальный сервер мог получить доступ ко всем файлам, и если кто-то пойдет против, ему не разрешат, как мы можем это сделать? но я хочу это только через php

Ответ №1:

Вы не можете включить удаленный PHP-файл. Если для allow_furl_open и allow_url_include установлено значение true и используется include('http://yoursite/temp/yourfile.php') , то включается вывод этого PHP-файла. Не сам исходный код PHP.

Итак, когда у вас есть php-файл со следующим содержимым:

 <?php
    $password = "secret";
    echo "Test";
?>
  

И если кто-то удаленно включит этот файл, он получит обратно только «Test», что не является допустимым синтаксисом PHP. Они не смогут видеть содержимое файла, только то, что выводится. Файл запускается на удаленном (или в данном случае вашем) сервере. Тот, кто включает это, получает выходные данные после выполнения на этом сервере.

Таким образом, вам не нужно делать ничего подобного if (!isset(some_magical_constant)) die("Go away!") , это просто глупо, но, к сожалению, я видел это по всему Интернету.

Комментарии:

1. вы имеете в виду, что выполняется запрос mysql, например: $ q = mysql_query («SELECT * FROM user», $ con) или die (mysql_error()); $ user = mysql_fetch_assoc ($ q); теперь никто не может извлечь данные из массива $ user правильно?

2. Да, ваш PHP-код и данные обычно не могут быть включены или доступны извне. Однако не глупо выходить из PHP-файлов, которые должны выполняться только в контролируемой среде (вероятно, включенной index.php или аналогичный). В зависимости от того, как написан код, он может творить ужасные вещи при выполнении без контролируемой среды.

3. Вы правы, но если вам нужно полагаться на подобные проверки, я думаю, пришло время для полной перезаписи. Скорее кем-то другим, чем оригинальным программистом.

Ответ №2:

htaccess, единственный известный мне способ … не думаю, что это возможно с PHP

 <Directory /public_html/temp>
  order allow,deny
  deny from all
</Directory>
  

Ответ №3:

Поместите пустое «index.html «файл внутри вашей папки «temp». Это не позволяет пользователю видеть содержимое этой папки. Что в принципе делает невозможным для пользователей обходить это.

Что касается включения этого в скрипт, люди должны знать, какие файлы в нем находятся, чтобы использовать его в скрипте.