【问题标题】:Intercept and filter HTTP request拦截和过滤 HTTP 请求
【发布时间】:2013-01-31 04:39:57
【问题描述】:

我想拦截/嗅探传入的 HTTP 请求并过滤/修改其内容(在它们到达应用程序之前)。

“提琴手”似乎有这个功能,但为了集成和可移植性,我宁愿有一些 Java/C 库来做到这一点。比如JPCAP。它拦截 IP 数据包,但如前所述,我需要拦截更高级别的 HTTP 请求。

此外,如何以相同的方式读取/修改 SSL 加密 (HTTPS) 请求?

提前致谢。

【问题讨论】:

  • 这可能是有用的阅读 - stackoverflow.com/questions/2260710/…
  • @Perception,看起来确实很有用。 JPCAP 中的实现绝对不是必需的。我是否应该研究一些 HTTP(S) - 代理/过滤器的直接示例?
  • 您需要在此处确切地做什么?例如,过滤以丢弃“坏”HTTPRequest?需要修改哪些内容?
  • @Thomas - 如果没有具体要求,这真的很难说。您是否尝试过滤所有进入服务器的 HTTP 请求?一个域?进入应用服务器?还是在应用服务器上运行的应用?关键是你想要一个用 Java 编写的 HTTP 反向代理,但是拦截的级别将决定你可以监控什么样的流量,也决定了你将能够进行的过滤级别。
  • @Perception,我需要“读取”传入的 HTTP 请求并确定它是否可以传递给例如 WebService。这将涉及读取源和目标(IP、端口)以及请求的内容(SOAP、XML 文档)。所以基本上,检查恶意行为和内容。

标签: java http https filter sniffer


【解决方案1】:

你试过Servlet Filters吗?

它们封装了 HTTP 请求,因此可以在请求到达 servlet 之前对其进行修改,也可以修改响应。它们可以(并且已经)用于包装第三方 servlet 和 JSP。

因为它们位于 servlet 容器中,所以您可以安全、未加密地访问请求和响应。

【讨论】:

  • 我不熟悉 Servlet。这需要成为某个特定 Java 服务器的一部分吗?因为我希望它完全独立于 http 请求的去向。我了解此要求绝对排除了过滤 SSL 加密内容的可能性?
  • 啊,我从问题中的“java”标签猜到您正在尝试探测 Java 服务器的 HTTPRequest,因此 servlet 可以正常工作。为了回答您的问题,Servlet 是处理 HTTP 请求的 Java 类,并且驻留在 Web 应用程序容器(例如 Tomcat、WebSphere、Weblogic 等)中。但是,可以将过滤器添加到现有 Web 应用程序容器,而无需对现有应用程序进行任何代码修改。
猜你喜欢
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多