0

我的老板希望我通过在地址栏中键入 URL 来调整 Java webapp,从而有效地禁用在 Java webapp 中导航的能力。

我想出了一些策略来实现这一点。

我正在考虑的一件事是生成一个唯一的 ID 号并将其打印在 JSP 上的隐藏表单字段中,以通过 HTTP POST 请求发送回服务器。

我知道想要玩游戏的人可以保存页面并从生成的静态文件提交帖子表单。

我正在考虑加密身份证号码,但我想知道这样做是否有意义?它将在服务器端被解密,就像用户单击导航按钮或黑客用户查看源并使用脚本/静态 HTML 页面将 ID 号发送回服务器一样。

我错过了什么吗?

4

1 回答 1

0

这一切都取决于所使用的策略,但 UID 的加密本身并不是一个好的解决方案。任何依赖加密的安全性最重要的部分是协议和密钥管理。基本上,如果您不能信任两者之一,那么您的应用程序是不安全的。如果加密的 UID 只是被视为一个静态变量,那么任何人都可以简单地复制加密的 UID(正如您在问题中所想的那样)。

您可以做的是使用存储在 cookie 和服务器中的 UID。使用它来创建密钥(使用密钥派生函数)。现在,如果有请求,请确保请求包含唯一编号(例如会话 ID + 计数器)。现在您可以使用之前计算的密钥创建消息验证码,对其进行 base64 编码并与请求一起发送。然后你在服务器端验证这个 MAC(使用密钥、数据,当然还有 MAC 数据)。

即使是这种方案当然也无法阻止黑客。为此,您至少需要使用 TLS 连接来确保在传输过程中无法读取 UID(用于生成密钥)。基本上,如果没有 TLS,您就无法创建足够安全的解决方案来阻止有针对性的中间人攻击。

于 2013-05-29T21:42:10.577 回答