1

我正在尝试为我的应用程序添加一些安全性。我有一个应用程序连接到的服务器,我正在考虑在建立连接时发送二进制校验和。如果校验和与我想要的不匹配。服务器不会允许任何连接。

我已经阅读了几篇关于如何提高应用程序安全性的文章,并且许多文章提到了对二进制文件进行校验,但没有找到任何代码来解释在运行时如何实际校验二进制文件。

例如 http://www.seoxys.com/3-easy-tips-to-prevent-a-binary-crack/#ptrace

除此之外,据我了解,由于Apple会在提交时签名,因此无法事先知道确切的校验和?但是,我可以在提交新版本时禁用服务器上的检查,然后在我知道校验和时重新启用检查。不是完美的解决方案,但解决方案是什么?

谁能指出我正确的方向?

4

1 回答 1

1

简而言之,这是一件非常困难的事情。原因是,一旦客户端代码离开您的手,您就无法控制它。即使你用校验和完美地工作,攻击者仍然可以获取二进制校验和,修改它,然后通过修改该代码让它提交以前的校验和而不是新的校验和。事实上,您可能会通过使用像 _getBinaryChecksum() 这样他可以更改的函数来让他/她轻松:-)

如果您打算这样做,请使用加密的强哈希算法,如SHA-256。没错,Apple 签名会更改哈希值,因此您需要在 Apple 签名使用文件的哈希值对服务器进行编程。另外请记住,对应用程序的任何更改都会极大地影响哈希,因此您需要保留以前哈希的历史列表,这样您就不会将尚未升级的客户拒之门外。

您可能想查看这些 StackOverflow 问题,因为听起来您正在尝试做类似的事情:

在 iPhone 应用程序中使用 REST API 时的安全性

https://stackoverflow.com/questions/15390354/api-key-alternative/15390892#15390892

于 2013-03-22T22:25:54.007 回答