如何防范PHP中的日志注入攻击?

off*_*ine 9 php security logging

防御PHP中的日志注入攻击的最佳方法是什么?当然,我们应该清理输入,但是问题是如何处理,必须清理什么?

例如,如果我正在记录可能来自用户的内容,第一步将是确保用户输入的内容,不会在操作系统中引起任何问题或应用程序的异常行为。然后,如果我们在应用程序中的某处显示日志条目,则需要确保不可能进行XSS和类似的攻击。

我正在将PHP清理过滤器作为一种可能的解决方案,但我真的不知道应该过滤什么。哪些字符可能很危险?

ahm*_*mad 9

这是我的观点,我喜欢使日志尽可能不过滤,除了新行外,我从不过滤输入,以确保每个日志条目只有一行。

您需要确保以下几点:

  • 切勿使用includerequireeval显示日志文件的内容; 使用fopen或阅读文件,file并打印出内容。
  • 在显示输出之前过滤输出,像htmlentites这样可以更改引号和html打开/关闭标签的东西会很好。
  • 如果您可以在文本区域中显示输出,则如果存在任何xss或其他恶意代码,浏览器将在不执行脚本的情况下显示数据。
  • 确保将日志文件存储在不可公开访问/不能通过Web访问的文件夹中,并删除用户/组的执行权限和“其他”的所有权限。
  • 最终建议:尝试破解您的日志,以确保您覆盖了所有基础,并在使用时使用模糊器测试自动攻击。