java - 如何阻止特定客户端访问 Web 应用程序?

标签 java cookies security access-control

有一个 Java 应用程序正在请求一个页面,我希望阻止它。

我想到的一种方法是使用 session 或 cookie,但我不确定 Java URL 方法是否可以处理它们。

除了使用 session 或 cookie 之外,还有其他方法可以区分来自该 Java 应用程序的请求并阻止它吗?我知道它有一个独特的 Java 用户代理 header ,但我希望更准确。

最佳答案

标题问题的答案是URL.openXxx方法不理解cookie。

(如果您的服务器配置为接受请求 URL 本身中的 session token ,URL.openXxx 方法将不会妨碍。但是,这种方法不安全。)

然后我们进入您问题的正文。

... is there another way besides using sessions or cookies that i could distinguish requests from this java app and block it?

此时,我假设您正在谈论阻止服务器端的请求。我应该指出,“坏人”客户端用来发送请求的内容现在是不重要的。 (它可以使用 URL 或 Apache HTTPComponents,或者可以用汇编代码实现 HTTP 协议(protocol)栈!)

所以真正的问题是您有哪些选项可以阻止不需要的请求。答案是:

  • 您可以根据请求网址本身进行阻止,但这可能会适得其反。
  • 您可以根据请求 header 中是否存在 session (或其他)cookie 进行阻止。这是进行访问控制的正常方式,并且假设您安全地发布和处理 cookie,这是很难被击败的。
  • 您可能要求在请求 URL 中传递 session token ,但这存在根本性的安全问题。
  • 您可以依赖其他“信息丰富” header ...例如用户代理 header ,但这很容易被击败。
  • 您可以根据请求源 IP 地址进行阻止,但攻击者所需要做的就是从不同的 IP 地址发送请求。
  • 您可以通过使用基于 SSL/TLS 的 HTTP 和客户端证书来限制访问,但这意味着您必须管理所有合法客户端主机的证书,这在大多数环境中都会出现问题。

总之,cookie 是最好的解决方案,因此“好人”客户端应用程序需要使用能够进行 cookie 管理并在请求中设置 cookie 的库。

关于java - 如何阻止特定客户端访问 Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11751692/

相关文章:

javascript - 在 Angular 模板中使用 http cookie 值

javascript - 如何在 Chrome 地址栏中显示和隐藏 cookie 图标?

session - 在 Electron 中,默认 session 是持久的吗?

php - 使用 php 表单提交安全性

java - Antlworks语法解析器

CSV 多项式的 Java.Lang.Double[] 到 Double[] 问题

Java - 网格中的六边形位置

Java 意外输出

security - 了解 PKCE 与授权码授予的优势

asp.net-mvc - 使用基于路由值的 AuthAttribute 安全调整 MVC 站点地图提供程序节点