КОНТЕКСТ

У меня есть веб-приложение, и я перехватываю свое исключение глобально, чтобы записать его в файл внутри моего приложения (/app/log/app.log). Общедоступная папка делает невозможным просмотр за пределами папки, поскольку она смонтирована для обслуживания клиента (/public/index.php).

Я также использую модифицированную версию Exception::getTraceAsString(), которая позволяет мне иметь полные строки вместо того, чтобы PHP усекал строки в этой трассировке (код действительно тривиален, я не буду помещать здесь класс, потому что он не имеет отношения к вопрос, который я задаю).

Вот пример того, как выглядит мой файл app.log:

2018-06-10 14:33:12.7016 (+02:00) [ERRO] Error of type PDOException catched
2018-06-10 14:33:12.7020 (+02:00) [DBUG] Error catched on line 22 of file C:\xampp\htdocs\my-app\app\bootstrap\database.php
2018-06-10 14:33:12.7026 (+02:00) [DBUG] #0 [internal function]: PDO->__construct('mysql:host=localhost;dbname=test;port=3306;adapter=;prefix=', 'root', '', Array)
2018-06-10 14:33:12.7028 (+02:00) [DBUG] #1 [internal function]: Phalcon\Db\Adapter\Pdo->connect(Array)
2018-06-10 14:33:12.7031 (+02:00) [DBUG] #2 C:\xampp\htdocs\my-app\app\bootstrap\database.php(22): Phalcon\Db\Adapter\Pdo->__construct(Array)
2018-06-10 14:33:12.7034 (+02:00) [DBUG] #3 C:\xampp\htdocs\my-app\public\index.php(7): include('C:\xampp\htdocs\my-app\app\bootstrap\database.php')

Зная, что я хотел бы избавиться от этой информации вне своего приложения, допустим, сервис SaaS для хранения и поиска в различных местах назначения журналов (которые потенциально могут быть видны сотруднику системы SaaS).

ПРОБЛЕМА

Как видите, мой app.log иногда может содержать разумный контент, например пароли.

ВОПРОС

Есть ли современный способ справиться с чувствительностью содержимого в наших трассировках журнала?

Кроме того, как насчет безопасности в отношении того факта, что в наших журналах видны абсолютные пути?

1
Anwar 10 Июн 2018 в 15:57

1 ответ

Лучший ответ

Есть ли современный способ справиться с чувствительностью содержимого в наших трассировках журнала?

Кроме того, как насчет безопасности в отношении того факта, что в наших журналах видны абсолютные пути?

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

То есть я рекомендую использовать API герметизации < / a>, чтобы зашифровать информацию журнала.

Поскольку вы спрашивали о современном состоянии, я особенно рекомендую здесь sodium_crypto_box_seal() / sodium_crypto_box_seal_open(). (PHP 7.2+)

1
Community 20 Июн 2020 в 09:12