我应该在参数中传递数据库用户和密码来调用Web服务以从数据库获取数据

时间:2013-11-20 09:47:22

标签: android web-services https

这是一个基本问题。我正在编写一个Android应用程序,它使用Web服务从数据库中获取数据。我将一些参数传递给Web服务,它以JSON / XML格式返回数据。我的问题是我应该通过数据库用户名和密码作为参数来打开数据库连接,还是应该将这些凭据保存在Web服务中? 如果我将这些凭据保留在服务中,那么任何知道我的Web服务位置和我传递的参数的人都可以访问我的数据库并获取数据。 如果我请求调用者将这些凭据作为参数传递,那么在从移动应用程序调用Web服务时通过Internet发送此信息是否安全。

我发现了this关于在调用Web服务时保护数据的示例,这很好地解释了即使您使用https,但仍然发送纯文本是不安全的。

由于

2 个答案:

答案 0 :(得分:3)

我认为this答案将解释您要问的内容。

'silverback'是对的。永远不要从客户端请求这些凭据,这是不安全的。您可以使用某种加密方式验证客户端...

Here is an example from to generate authentication token:

(day * 10) + (month * 100) + (year (last 2 digits) * 1000)
for example: 3 June 2011

(3 * 10) + (6 * 100) + (11 * 1000) = 
30 + 600 + 11000 = 11630
then concatenate with user password, example "my4wesomeP4ssword!"

11630my4wesomeP4ssword!
Then do MD5 of that string:

05a9d022d621b64096160683f3afe804
When do you call a request, always use this token,

https://mywebservice.com/?token=05a9d022d621b64096160683f3afe804&op=getdata
This token is always unique everyday, so I guess this kind of protection is more than sufficient to always protect ur service.

答案 1 :(得分:1)

最好保留一些唯一密钥,而不是发送密码和用户名。如果您担心安全问题,那么您应该对您身边和服务器端的凭据进行一些加密。我不认为Android客户端需要这种严格的加密方法。使用简单的验证密钥。

试试这个:Web服务凭证 - OpenID / Android AccountManager? Click here

相关问题