java - 在生产代码中,无法验证请求参数或格式时的日志级别是多少

标签 java logging

如题。 在生产代码中,当未能验证请求参数或格式时,日志级别是多少?

我基于两点混淆了这个谜题:

(1) 如果我将其记录为错误。我担心如果一个黑客发送过多的错误请求会导致我们的APP记录两个错误日志。

(2) 但如果我将其记录到调试或更低级别。我担心我无法有效跟踪问题,因为在生产应用程序中,日志将设置为警告。

那么我的选择是什么?

最佳答案

如果验证失败不是因为系统错误,而是因为输入数据无效,我会记录为信息或警告。如果遇到系统异常等问题,例如数据库连接失败或空指针,则记录错误。否则,输入验证不一定构成错误 并且是一种照常发生的类型,因此是信息级别。

如果黑客反复运行脚本发送“太多请求”,这可能被归类为拒绝服务攻击。在这种情况下,您需要确保您的防火墙软件已设置为过滤这些,我不会在应用日志中担心它。

最后,如果黑客没有在拒绝服务阈值时完全轰炸您的系统,那么您可能需要编写一些逻辑来捕获这种“错误的验证”并记录一个带有明确错误消息的错误你会知道要寻找的,即一种特殊的错误。一个这样的例子是 sql 注入(inject)攻击,表单验证可能会捕获(并且您的应用程序中的某些层肯定会捕获)。

根据您使用的日志框架类型,您可以为这种情况定义自己的错误级别或错误类别。

关于java - 在生产代码中,无法验证请求参数或格式时的日志级别是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497171/

相关文章:

java - 在Java中增量读取日志文件

php - 即使 APP_DEBUG=false,Laravel 也会继续记录

java - 无法将 c3p0 日志记录转至文件

java - 使用 log4j 通过 SMTPAppender 发送电子邮件报告

java - 尝试Struts时出现无法加载配置错误

java - 从其他 fragment 控制蓝牙

python - 当递归函数中出现错误时,如何避免长堆栈跟踪?

python - Raven 的 SentryHandler 正在抑制 StreamHandler 输出到文件

java - 分支处的堆栈图帧不一致 - Java8 Maven 单元测试

java - Google pubsub 流量控制