记录PHP异常跟踪的安全方式(可能包括合理的凭据)

时间:2018-06-10 12:57:38

标签: php security logging

CONTEXT

我有一个网络应用程序,我全局捕获我的异常,将它们记录到我的应用程序(/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 个答案:

答案 0 :(得分:1)

  

是否有最先进的方法来处理日志记录中内容的敏感性?

     

此外,关于绝对路径在我们的日志中可见这一事实的安全性又如何呢?

您在这里可以做的最好的事情是用公共密钥加密日志,而相应的秘密密钥只有您的运营团队和/或开发人员才能知道。

也就是说,我建议使用sealing API来加密日志信息。

由于您询问了最新技术,因此我在这里特别推荐sodium_crypto_box_seal() / sodium_crypto_box_seal_open()。 (PHP 7.2 +)