如何在 Java EE 6 中保护 REST Web 服务

2022-09-03 07:23:33

我使用Java EE 6(使用参考实现)制作了一个Web应用程序,我想将其公开为REST Web服务。

背景是我希望能够将数据从Web应用程序检索到我制作的iOS应用程序。问题是我将如何保护应用程序?我只想让我的应用程序使用 Web 服务。这可能吗,我该怎么做?我只需要知道我应该搜索和阅读什么,而不是实际的代码。


答案 1

不幸的是,您的Web服务永远不会完全安全,但以下是您可以执行的一些基本操作:

  • 使用 SSL
  • 将所有(应用)出站有效负载包装在请求中。这将防止随意窥探以了解您的Web服务的工作原理(以便对协议进行逆向工程)。POST
  • 以某种方式验证应用的用户。理想情况下,这将涉及OAUTH,例如使用Google凭据,但是您明白了。

现在我要指出为什么这不会完全安全:

  • 如果有人掌握了你的应用程序并对其进行了逆向工程,那么你刚刚做的一切都在窗外。唯一能保持的就是您的用户验证。
  • 在这种情况下,嵌入客户端证书(正如其他人所指出的那样)对你没有任何帮助。如果我只是反向启用了你的应用,我也有你的客户端证书。

你能做些什么

  • 验证后端上的帐户,并监视它们是否存在异常使用情况。

当然,当有人出现时,这一切都会消失,对你的应用程序进行逆向工程,构建另一个应用程序来模仿它,你(通常)不会知道更好。这些都只是要记住的要点。

编辑:此外,如果还不明显,请使用(或)所有应用程序查询的请求(到您的服务器)。这与SSL相结合,应该会阻止您的随意窥探者。POSTGET

编辑2:似乎我错了:比更安全这个答案在指出这一点方面非常有用。所以我想你可以在这里使用或互换。POSTGETGETPOST


答案 2

取决于您想要的安全性。

  • 如果您并不真正关心,只需在应用程序中嵌入一个秘密单词,并包含在所有请求中即可。
  • 如果您更关心,请执行上述操作,并且仅通过https公开服务。
  • 如果希望它安全,请向你的应用颁发客户端证书,并要求在访问服务时存在有效的客户端证书。