【问题标题】:Security with Web Services in JavaJava 中 Web 服务的安全性
【发布时间】:2011-02-28 17:55:28
【问题描述】:

我们有一个调用我们的网络服务的客户端。我们如何确保只有我们的客户端应用程序调用了 Web 服务,而不是其他人创建的客户端调用了我们的 Web 服务。

我们希望避免将密码硬编码到应用程序中。

【问题讨论】:

    标签: java web-services security jakarta-ee


    【解决方案1】:

    您的问题的快速答案是查看 OAuth。正确实施 OAuth 是一个过程,所以我会阅读 protocol documentation。这是 OAuth client libraries 示例的链接。我还会搜索 StackOverflow 以获取有关 OAuth 实现的建议。

    【讨论】:

      【解决方案2】:

      在这种情况下,您可以使用two-legged OAuth。这是标准 OAuth 的一种变体,被 SimpleGeo 等公司使用。然后使用 https 保护通信,您就有了强大的解决方案。

      【讨论】:

        【解决方案3】:

        如果您不关心不在浏览器中运行的客户端,那么您可以使用 XSRF 令牌,即每个会话的秘密,它要么与后端中的某个会话密钥相关联,要么通过两个单独的路径往返,例如就像通过一个隐藏的表单输入和一个安全通道上的 cookie。如果您无法保护通道,则必须使令牌一次性使用。 见http://www.cgisecurity.com/csrf-faq.html#protectapp

        在一般情况下你不能。一个相当聪明的黑客可能会对您使用的任何协议进行逆向工程,并提取您嵌入源代码中的任何秘密。

        【讨论】:

        • "一般情况下你不能"是什么意思?当您控制服务器端并掌握服务器端的信息时,可以证明,您可以设计一个完全安全的系统。例如,没有人,不是一个人,在 battle.net 上(即:在真实的暴雪服务器上,在所有合法玩家都在玩的真实经济中)使用伪造的凭据来玩 Wow .没有一个破解小组设法做到这一点。如果正确完成,在数学上是不可能的。如果您控制服务器端并且在那里进行计算,那么对于破解者来说就是“Game Over [TM]”。
        猜你喜欢
        • 1970-01-01
        • 2015-08-30
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多