2012-01-01 20 views
2

对于我的Android应用程序,我通常会通过向各种PHP脚本URL发送GET或POST参数来查询数据库,而这些参数反过来会吐出我在应用程序中解析的xml或json。Android - 如何使用登录名和密码正确查询在线数据库?

但是,如果我有一个数据库中包含个人受保护的信息,用户通常会使用登录名/密码进行访问,那么从应用程序查询此信息的最佳方法是什么?我上面的方法可以工作,但我可能需要发送用户的登录名/通行证作为GET或POST参数...但这似乎是一个坏主意...

通常与Web应用程序,用户日志然后从那一点开始使用PHP会话。不知道如何用Android应用程序来处理这种类型的事情。

回答

1

我不认为身份验证是独立的Android应用程序连接到Web服务。

您会复制您在android上的Web服务中使用的相同身份验证机制。也就是说,如果您在Web服务(它传输明文密码)中使用http身份验证,则您将在android上复制http身份验证。如果您不想通过网络传递明文凭证,您首先必须首先在Web服务中实施更安全的(https)。

对于我的项目,我使用POST请求将明文凭证传递给服务器。浏览器也传输明文密码。在认证之后,服务发回一个令牌(数据库中的一个用户id),它必须包含在所有将来需要用户登录的请求中。

当将登录ID &密码存储到首选项中时,我使用sha1先将其哈希。这确实意味着下一次,我的Web服务会传递散列的凭据,并且必须知道如何处理它。

这种机制很简单,足以满足我的需求。对于这个项目,我无法负担得起类似https的东西。

+0

如果你存储,并通过密码作为哈希..不会散列密码是无用的?因为无论如何你都不需要密码,我的意思是。 – 2012-01-01 13:47:51

0

使用PHP脚本中间人总是比直接连接到数据库更安全,因为您可以添加自己的安全层。

在我的应用程序,这样做,我编码和解码与一硬编码盐传递的数据,并使用生成的认证令牌需要用户先登录任何交易。

这真的取决于什么尽管如此,你还是要专门做。

+0

我想你完全错过了我的要求。我总是使用PHP脚本从数据库中获取数据。我问的是如何做同样的事情,但使用登录/密码系统。 – 2012-01-02 01:18:53

+0

虽然有很多方法可以解决这个问题,但这取决于你想要做什么。 例如,如果登录凭证正确,您可以拥有第二个身份验证PHP脚本,该脚本会生成会话,并返回生成的身份验证令牌,该令牌可以由应用重新发送至任何需要登录的PHP脚本。 – 2012-01-02 01:41:37

相关问题