【问题标题】:Verify http requests from signed jar验证来自签名 jar 的 http 请求
【发布时间】:2015-06-28 01:32:22
【问题描述】:

我正在为我的 web 应用程序编写客户端,并且我使用我的开发人员证书签署了发布 jar,我如何验证休息服务的请求来自我签署的 jar?

【问题讨论】:

  • 你不能。任何拥有您签名的罐子的人都可以拆解它,因此,找出如何伪造此类请求。您可能会通过静态或动态混淆使其变得更加困难,但这只会增加一点障碍。另一方面,如果您试图在无法访问您的 jar 的情况下防御攻击者,则该 jar 可能包含用于签署其余服务请求的私钥。
  • 您要解决的根本问题是什么?如果您编辑您的问题以包含该内容,我们或许可以提出替代解决方案。
  • @mkl 是对的。任何可公开访问且有人可以获取客户端的服务都可以进行逆向工程,并且在客户端在手的情况下,无法阻止某人找到您的私钥或其他保密机制。一般来说,尽量不要太担心应用程序正在向你的服务发送请求;担心 user 发送给他们的是什么。如果我已登录并通过身份验证,那么我使用您的自定义客户端还是 telnet 都没有关系。
  • 在添加赏金之前,您确实最好更新问题。如果您只想防御临时攻击者或脚本小子,则一定程度的混淆可能就足够了。如果您想防御专业人士认真试图克服您的障碍,它不会。因此,请更清楚地说明您的安全要求。

标签: java digital-signature executable-jar rest-security


【解决方案1】:

你不能。签名用于执行验证,这意味着它在服务器端。但是您想在客户端检查 http/rest 请求的签名。客户端没有这样的验证。

您可以向响应本身添加一些内容并在客户端对其进行验证,但同样,没有什么能阻止任何其他服务器发送相同的值并伪装成您的服务器。

您还可以向 jar 中添加一些行为特征(如会话 cookie),但同样,没有什么能阻止其他 jar 也模仿它。

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 2019-09-02
    • 2018-08-25
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多