【问题标题】:How to intercept and validate HTTP requests in a Java EE environment如何在 Java EE 环境中拦截和验证 HTTP 请求
【发布时间】:2012-10-14 10:33:55
【问题描述】:

我正在做一个项目,主要概念是为 Java EE 开发一个引擎,用于验证来自客户端的 HTTP 请求。

我查看了一个与此相关的引擎,它是 OWASP PROJECT STINGER。我自己对这个引擎的理解是,使用 STINGER 引擎的开发人员会设置所有规则或配置所有内容,例如通过填写 XML 文件(他们称为 SVDL 文件)来设置允许的正则表达式和 cookie 规则集。

现在我的主要问题是如何为 Java EE 开发引擎?我将从哪里开始?

【问题讨论】:

  • J2EE 有什么特别之处?它像任何其他 http 服务器一样使用标准 HTTP 请求,不是吗?你想验证什么?
  • 我认为你不应该重新发明轮子。有几个库可供您从中派生解决方案,或根据需要使用它们。
  • 如果您只需要验证请求,您可以直接使用 OWASP Stinger。它就是这样做的,使用称为Filter 的Java EE 构造来验证请求。它基本上拦截 http 请求(和响应),并允许您对它们做几乎任何您想做的事情。
  • 感谢你们所有的 cmets,这个项目是我第四年的期末项目,主要目的是开发一个 API 或一个工具来实现 Web 应用程序防火墙的概念,我想要向我的主管表明我完全理解 Web 应用程序安全的基本概念,并希望能发现新的想法。

标签: java jakarta-ee servlet-filters


【解决方案1】:

嗯,它不再被称为 J2EE。改成 Java EE 已经有好几年了。现在,Java EE 是compendium of technologies (i.e. JAXB, RPC, EJBs, JSP, JTA, etc., etc., etc.)。实现一个完整的容器是一项主要任务,我怀疑这是你想要的。您似乎在谈论实现 HTTP 服务器,这可能只是 Java EE 所做工作的一小部分。

现在,如果您坚持实施它们,那么起点始终是阅读您打算实施的特定技术的 Java 规范。从Java Community Process 下载 JSR 并根据其要求设计您的实现。

例如这是Specification for Servlets

【讨论】:

  • +1 - 顺便说一句,正确的名称是 Java EE 而不是 JEEjava.com/en/about/javanaming.jsp
  • @BlaiseDoughan 已修复。谢谢!
  • 感谢你们所有的 cmets,这个项目是我第四年的期末项目,主要目的是开发一个 API 或一个工具来实现 Web 应用程序防火墙的概念,我想要向我的主管表明我完全理解 Web 应用程序安全的基本概念,并希望能发现新的想法。
  • @Isavel 在这种情况下您不需要实现 Java EE 规范。您需要对 HTTP 协议以及 HTTP 服务器和代理有透彻的了解。您应该阅读本书HTTP The Definitive GuideHTTP RFC
  • @EdwinDalorzo 谢谢伙计,是否可以在 java 中开发一个简单的工具来分析来自客户端的 http 请求。我发现这个 API jnetpcap 可以让你捕获网络数据包,它有利于监控数据包,但它没有过滤掉数据包的能力,这涉及阻止或丢弃不需要的数据包。
猜你喜欢
  • 2019-07-08
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2013-01-31
  • 2012-04-23
  • 1970-01-01
相关资源
最近更新 更多