Как вы разрешаете PHP писать в файл без ущерба для безопасности сервера - PullRequest
5 голосов
/ 13 февраля 2012

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

Я использую функции fopen(), fwrite() и fclose().

Единственный способ, которым я знаю, как это сделать, - это установить разрешения для выходного файла равным 0666 или владеть им "nobody" (то есть пользователем, под которым работает PHP на нашем веб-сервере Apache)..

Итак, если «0666» или «никто не принадлежит» представляют собой угрозу безопасности, как вы успешно и безопасно разрешаете PHP-сценарию записывать в файл?

Спасибо за руководство по обменуэта тема.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Если вам нужно получить доступ к файлам из PHP после их загрузки, они должны быть сохранены с разрешениями, которые позволяют веб-серверу (в данном случае apache) получать к ним доступ. Риск, о котором говорят люди, заключается в том, что какой-то сценарий на вашем сайте может быть обманут в обслуживании файла. Это гипотетический риск, но он произошел со многими системами управления контентом. Чтобы уменьшить этот риск:

  1. Сделать имя файла и путь не легко угадываемым. Если у пользователя есть путь к getfile.php?file=1.txt, он может легко сделать вывод, что также существует 2.txt. Зашифруйте имя или сделайте его неупорядоченным.
  2. Сделайте любой скрипт, который обслуживает файлы, подтверждающий такие вещи, как вошедший в систему пользователь, авторизацию на ресурсе и уберите что-нибудь из имени файла, содержащего путь, чтобы избежать мошеннических ссылок на /etc/passwd и тому подобное.

Если вам просто нужно отбросить файл и никогда не обслуживать его или снова обращаться к нему через PHP, у вас есть еще несколько вариантов. Либо используйте команды chmod или chown, чтобы сделать его нечитаемым для пользователя apache. Если вы хотите быть параноиком, попросите сценарий cron переместить файл (и переименовать его) в неизвестное место в исходном коде PHP. По крайней мере, тогда, если ваш сервер взломан, злоумышленник не сможет сразу войти в каталог, но мы приближаемся к тому моменту, когда обсуждение переходит к безопасности операционной системы.

0 голосов
/ 12 марта 2017

Риск заключается в том, что этот доступный для записи каталог находится в области, доступной для внешнего мира.Тогда те, у кого есть нужные инструменты и знают, как написать что угодно в этот каталог ... или файл.Затем они могут поместить в него вредоносное ПО или создать фишинговую схему на вашем сайте.

На самом деле они могут совершать любые действия, чтобы скомпрометировать вас.Я видел это на своих собственных серверах и не нашел правильного решения для этого.

...