Пользовательский файл журнала с правильными разрешениями - PullRequest
0 голосов
/ 11 января 2011

У меня есть файл для обработки платежей на моем сайте. Это работает просто отлично, но я хотел бы записать все запросы на эту страницу, чтобы в случае возникновения ошибки исходные данные были сохранены, и я мог обработать транзакцию вручную. Файл обработки использует fopen для записи в файл журнала в другом каталоге.

Сейчас у меня есть отдельная папка в корневом каталоге с разрешениями 755. Затем внутри находится файл журнала с разрешениями 777. Файл обработки, который записывает данные в файл журнала, в PHP, если это имеет значение, установлен на 777.

Это работает прямо сейчас, но файл журнала общедоступен. Я знаю, что могу делать это лучше, и что разрешения не правильные. Как я могу сделать это лучше?

Ответы [ 2 ]

1 голос
/ 11 января 2011

Поместите файл журнала вне корня документа.Сценарий PHP, который пишет в него, все равно сможет получить его (по полному пути), но Apache не сможет его обслуживать.

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

Я столкнулся с этим, когда искал ответ для себя.Я не верю, что существует простое «исправление разрешений», чтобы делать то, что вы хотите, и, возможно, самый безопасный способ - это поместить файлы журналов вне директории public_html.

Однако иногда это может быть неприятно - особенно есливы хотите, например, перехватить текст дампа paypal ipn в файле журнала, но не сделать его общедоступным.

В таких случаях вы можете использовать директивы файла .htaccess, чтобы разрешить запись из скрипта, но запретить чтение из публичногоaccess.

Например, это работает для меня (Apache .htaccess в корневой папке public_html);

 <FilesMatch "mycustom\.log">
   Order allow,deny
   Deny from all
 </FilesMatch>

и если у вас есть несколько журналов, которые вы хотите защитить, используйте его следующим образом:с "Pipe Separated";

 <FilesMatch "mycustom\.log|ipn_errors\.log">
   Order allow,deny
   Deny from all
 </FilesMatch>

Стоит отметить, что вышеприведенные директивы устарели с версии Apache 2.4, и вы можете рассмотреть возможность использования вместо них нескольких текущих директив: https://httpd.apache.org/docs/2.4/howto/access.html

Надеюсь, что это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...