2012-04-18 32 views
2

我正在开发一个iPhone应用程序,需要使用位于我自己的服务器上的Joomla生成的数据库。
有很多解决方案,所以为了提高安全性,我决定通过PHP与数据库“交谈”。Xcode 4.1 iOS咨询Joomla通过PHP生成数据库

我有一个PHP页面是这样的:

www.mypage.com/iphonelogin.php用户名= USER1 &密码= XXX &选项=登录

option可以? getuserinfologinreset password等等。

问题是密码存储在数据库中加密。 (MD5(password+Salt):Salt

所以,我想知道如何做到这一点通过以下方式:

  • 低安全性的方法:PHP得到来自APP明文密码,并从德DB完全加密的密码。然后PHP使用salt,加密密码并进行比较,然后返回YES或NO到APP。

  • 其他方式:PHP从APP获取密码REVERSIBLE加密并解密,然后像上面一样。

  • 好的安全方式(很慢):PHP从数据库中获取完全加密的密码,然后向应用程序显示Salt。 APP对Joomla密码进行加密,并将完整的加密密码发送给PHP进行比较,并向APP返回YES或NO。

我需要高安全性和快速连接,因为每次应用程序需要从数据库中取得某些东西时,必须确认登录名。

请告诉我要使用什么或其他方式来做到这一点。

+0

为什么不重新创建设备md5(密码+ salt)上的密码散列并将散列(将其称为加密,但这不是什么)发送到服务器,然后再比较散列版本? – Till 2012-04-18 11:12:52

+0

Joomla的哪个版本? – Craig 2012-04-18 11:26:24

+0

问题是盐是自动生成的,所以设备需要知道BD中的盐,然后使用它来散列密码。 关于Joomla版本,我不知道...我只有这个数据库,有人创建了,我使用它。 – unb 2012-04-18 11:35:19

回答

0

你应该写一个会话管理功能集到您的客户端< => Joomla服务器设置。

此工作流程将会看到用户只输入一次电子邮件和(普通)密码,然后从服务器请求会话令牌。

每次客户端需要来自服务器的数据时,都可以验证该令牌。

正如您所指出的,切勿将数据库直接暴露给客户端。这对于任何设置来说都是一个糟糕的主意。您应始终在客户端和服务器之间保留一个接口/ API缓冲区,以消除潜在的安全风险。