2012-02-25 107 views
0

我有一个服务器上存储的mysql信息。现在我需要我的Iphone应用程序能够登录到帐户并更新存储在数据库中的信息。所以我想知道,最好的办法是什么呢? 我应该使用POST发送数据到PHP脚本,然后回显用户可以登录或不登录的响应吗?(用户名和密码匹配)?从Iphone App登录到Web服务器?

这只是这似乎不安全,我也需要创建某种会话,一旦登录阶段已完成?

我从来没有这样做过,所以会真的感谢任何帮助!

非常感谢

回答

1

您描述了实现它的常用方法。你需要某种你可以“交谈”的webserivce。它以您将数据发布到webserivce的方式完成,webserivce(例如用PHP编写)打开到数据库的连接并返回请求/登录成功。

如果您只是以明文形式发送密码,而不是不安全,那么您是对的。我使用两件事来使通信更安全。

  1. SSL:如果可能请建立安全连接。但有可能你没有通过ssl连接的选项。

  2. 密码散列:您至少可以散列密码。在正常情况下,用户名在应用程序中是公开的,但密码不是。哈希函数是返回一个字符串的函数,它对人类看起来是随机的。散列函数是单向函数。没有办法回到原来的字符串(如果你没有几台超级计算机和几百年的时间)。因此,一旦你在你的web服务中检索了一个哈希密码,只需在数据库中加密密码并进行比较。如果使用相同的散列函数,则字符串总是返回相同的散列值。常见的散列函数:MD5SHA familiy

我希望我的回答可以帮助你了。也许我的方法不是最安全的,但直到知道没人告诉我更好的东西。 ;-)

1

对于手机应用程序,桌面应用程序和一些网络应用程序,这是一个常见问题。 Sandro Meier(above)正确地表示,如果您有SSL访问权限,那么这是通过HTTP POST发送用户名和密码的最佳方式,因此网络上的其他人无法嗅探到这些详细信息。

如果你不能使用HTTPS,那么我会从你的iPhone应用推荐。 1.将用户名+密码从iPhone发布到PHP。 2.在PHP代码中的服务器上,检查这些详细信息,如果正确生成一些随机标记,例如(KHnkjhasldjfoi & *),则可以使用PHP中的MD5哈希函数执行此操作。 3.将该散列保存在数据库中,以便知道您将其发回给哪个用户。 4.现在,从应用程序到PHP的所有其他请求都包含此令牌和请求(在PHP中,您将需要检查该令牌,并且该令牌是否有效,然后获取或更新数据)。 5.这样,如果有人试图嗅探他们没有访问用户密码的连接,他们只能窃取令牌。

如果您希望99%安全,您需要使用HTTPS连接(但HTTPS可能是伪造的,我在Computer World中对此进行了描述)。

这位前面提到的人使用MD5哈希来发送用户名密码,但这也可以被黑客攻击(用户可以下载你的应用程序,找到盐的MD5哈希,这样他们仍然可以窃取任何密码)。我认为W3C表示他们不建议对Web表单和密码页面进行加密,因为几乎任何东西都可以解密(我认为Quantum计算机甚至可以解密HTTP),因此它建议使用HTTPs,因为它提供了HTTPs发送敏感数据的最高安全性。

W3C密码明确。 http://www.w3.org/2001/tag/doc/passwordsInTheClear-52

+1

我喜欢你提到的量子计算机。一旦他们适合日常使用,我们需要得到真正的新算法来加密...... – 2012-02-26 15:59:15