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