安全通信iPhone到数据库

时间:2012-04-29 12:37:17

标签: iphone mysql authentication https

我正在创建一个iphone应用程序。

在应用程序中,我需要与数据库进行通信。我环顾四周,发现最好的方法是iPhone - >网络服务器 - > MySQL的。

如果我使用https,则流量不会是纯文本。

但我仍然担心安全问题。

假设我已经知道,auth.php会在当前会话中使用网络服务器,如果我有游戏或其他东西并使用registerresult.php注册结果,用户仍然可以登录通过网站上的auth.php并将自己的结果注册到registerresult.php。

(我使用POST方法发布数据)

你看到了问题吗?

我看过这个: http://www.icodeblog.com/2009/10/29/iphone-coding-tutorial-creating-an-online-leaderboard-for-your-games/2/

但是,这真的是一种好方法,还是更好? (每个语句发送一个硬编码的“密钥”)

如果没有使用https,那么该密钥仍然是纯文本的?

2 个答案:

答案 0 :(得分:2)

升级到答案

实现完全安全是不可能的:你必须始终考虑威胁是什么(来自谁,资源如何等等),以便充分防御它们。

例如,即使您在将结果数据发送到registerresult.php页面之前对结果数据进行加密签名,签名密钥仍必须嵌入用户手机上的应用中 - 因此确定的破解者仍然可以提取密钥并发送伪造的结果。我认为你必须在你的服务器上运行游戏,以便在那里保存状态信息,以便击败那种性质的威胁。

然而,任何人都不太可能花这么长时间来破解iPhone游戏(除非游戏非常受欢迎或者支付了一些物质价值的奖品)。如果一些技术高超的人成功发送伪造的结果,对你来说真的很重要吗?值得思考。

如果您认为可以容忍此类威胁,则您的问题中引用的方法存在一些缺陷。虽然HTTPS确实可以保护秘密密钥不被数据包嗅探器拦截,但它并不能阻止它被提供电话接受的SSL证书的透明代理拦截(例如已添加到自身的自签名证书)它的钥匙串)。

为了打败这种类型的威胁,我建议您计算(数据+随机盐值+密钥)的安全散列并将(数据,相同的盐值,该散列)发送到服务器;然后,服务器可以重新计算散列应该来自已知密钥的内容,并检查它是否根据收到的散列进行验证。

答案 1 :(得分:0)

上面的用户@eggyal据说是最好的答案。你最好在你的项目中使用加密技术然后你将数据发送到数据库的ur服务器文件。在服务器端,您将解密从前端接收的数据,之后您将与数据库进行通信。它将是安全的沟通。使用加密和解密方法。

以下是Encryption and decryption.

的链接