跳转到主要内容
Chinese, Simplified

描述


检测入侵需要三个要素:

  1. 记录安全相关事件的能力
  2. 确保定期监控日志的程序
  3. 一旦检测到正确响应入侵的程序

您应该记录所有安全相关信息。也许您可以通过查看在运行时无法检测到的日志来检测问题。但是你必须记录足够的信息。特别是,应记录所有安全机制的使用,并提供足够的信息来帮助追踪违法者。此外,应用程序中的日志记录功能还应提供管理记录信息的方法。如果安全分析师无法解析事件日志以确定哪些事件可操作,则日志记录事件几乎不提供任何值。

检测入侵很重要,否则你会给攻击者无限的时间来完善攻击。如果您完全检测到入侵,那么攻击者只有在被检测到并且无法发起更多攻击之前才会进行一次尝试。请记住,如果您收到合法用户无法生成的请求 - 这是一次攻击,您应该做出适当的回应。日志记录为您的应用程序/站点提供取证功能。如果它被摧毁或被黑客攻击,你可以追查罪魁祸首并检查出了什么问题。如果用户使用匿名代理,那么记录好日志仍然会有所帮助,因为记录了“发生的事情”并且可以更轻松地修复漏洞。

不要依赖其他技术来检测入侵。您的代码是系统中唯一具有足够信息来真正检测攻击的组件。其他任何事物都不会知道哪些参数有效,允许用户选择哪些操作等。它必须内置到应用程序中。


例子


简短的例子名称
这是一个占位符。使用ESAPI进行日志记录的更好示例将在此处进行。

public void testLogHTTPRequest() throws ValidationException, IOException, AuthenticationException {
       System.out.println("logHTTPRequest");
       String[] ignore = {"password","ssn","ccn"};
       TestHttpServletRequest request = new TestHttpServletRequest();
       // FIXME: AAA modify to return the actual string logged (so we can test)
       Logger.getLogger("logger", "logger").logHTTPRequest(Logger.SECURITY, request, Arrays.asList(ignore) );
       request.addParameter("one","one");
       request.addParameter("two","two1");
       request.addParameter("two","two2");
       request.addParameter("password","jwilliams");
       Logger.getLogger("logger", "logger").logHTTPRequest(Logger.SECURITY, request, Arrays.asList(ignore) );
   } 

相关漏洞

TBD

相关控制

TBD

参考

原文:https://www.owasp.org/index.php/Detect_intrusions

本文:

讨论:加入知识星球或者小红圈【首席架构师圈】

Article
知识星球
 
微信公众号
 
视频号