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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我已经使用Java EE 6(使用参考实现)创建了一个Web应用程序,并且我想将其公开为REST Web服务。

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

提问于
用户回答回答于

不幸的是,你的web服务永远不会是完全安全的,但你可以做的基本事情很少:

  • 使用SSL
  • 所有(应用)出站有效负载包装在POST请求中。这将防止偶然的窥探,找出你的网络服务如何工作(为了逆向工程协议)。
  • 以某种方式验证您的应用程序的用户。理想情况下,这将涉及OAUTH,例如使用Google凭据,但您明白了。

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

  • 如果有人拿到你的应用程序并对其进行逆向工程,那么你刚刚做的每件事都在窗外。唯一可以容纳的是你的用户验证。
  • 嵌入客户端证书(正如其他人已经指出的那样)在这种情况下无助于你。如果我只是推翻了你的应用程序,我也有你的客户端证书。

什么可以做什么?

  • 验证后端帐户并监视它们的异常使用情况。

当然,当有人出现时,这些都会消失,反向工程师应用程序,建立另一个模仿它的程序,而且你不会(通常)更好地了解它。这些都只是要牢记的一点。

此外,如果它不是很明显,使用POST(或GET)请求所有应用程序查询(到您的服务器)。这一点,加上SSL应该阻止你的随便的窥探者。

用户回答回答于

取决于你想要做到多少安全。

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

扫码关注云+社区