#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». Это не позволяет пользователю видеть содержимое этой папки. Что в принципе делает невозможным для пользователей обходить это.
Что касается включения этого в скрипт, люди должны знать, какие файлы в нем находятся, чтобы использовать его в скрипте.