2013-05-13 130 views
1

在阅读了很多关于如何通过Android应用程序访问外部数据库(MySQL)的主题和问题后,我的问题是:如何确保只有我的应用程序能够从该数据库检索数据?这关乎安全。Android应用程序和外部数据库之间的安全

为了访问该数据库,我打算在我的服务器上创建一个小的PHP文件,该文件将用作我的应用程序和我的数据库之间的接口。但是,如果有人可以看到使用的URL,那么他也可以与我的数据库进行交互。那么,我该如何防范呢?

谢谢。

回答

3

首先我会推荐你​​使用HTTPS传输协议,说实话,即使是自签名证书secret(有特殊标志等)也是很好的保护。

然后您在您的服务器上创建验证此证书的Web服务(确保您没有硬编码证书密钥)并且瞧。

编辑

假设你是在谈论Android的我会向您提供keytool教程Here。我还假设你知道你必须创建自定义HTTPS处理程序,以便将证书放入请求中,如果您不知道如何执行此操作,则可以在我回到家时立即发布它(我的项目已启动我的私人电脑)。部分服务器端证书验证是Here

+0

感谢您的帮助。当然,对于HTTPS。您能否向我提供关于serverside证书验证的链接/教程? “秘密担保证书”是什么意思? – 2013-05-13 09:53:28

+0

我的意思是说有两种类型的证书:1.用于服务器验证(不需要提供任何类型的附加信息,拥有由可信实体签名的证书就足够了)2.对于客户端(使用证书对客户端进行身份验证的证书是有权这样做的客户端,并且通过输入解密私钥的正确密码完成)我将编辑我的答案以发布一些链接 – Mithrand1r 2013-05-13 10:13:13

+0

再次感谢您。所以,我需要使用keytool创建一个自签名证书,然后检查证书。是的,请你能分享一些你的代码吗? – 2013-05-13 16:57:11

0

如果攻击者的动机很好,那么您不能通过外部API将对数据库的访问限制为仅限于您的应用。

您可以使其更难(例如使用存储在您的应用中的攻击者必须提取的秘密;使用Google's Play services等对您的应用程序进行模糊处理),并且可以创建威慑(限制使用API​​的许可),但从根本上说,您需要为其他人准备好将请求发送到您的API,看起来像他们来自您的应用程序。

适合什么样的方法组合取决于第三方访问对您的后果。

Twitter是使用许可控制第三方访问其API的有趣案例研究。没有什么能够阻止某人创造一个假装成为正式客户的客户,除非他们的威慑力足以让Twitter发现,他们会通过合法渠道追随他们。

+0

那么Google Cloud Messaging呢?它会适应我的情况吗? – 2013-05-22 17:42:00

+0

GCM现已成为Google Play服务的一部分,同样的故事--GCM将尝试向已识别的应用发送消息,但有人可能会在假装成您的应用的扎根手机上运行应用。 – Michael 2013-05-22 18:48:07

+0

嗯好的。因此,我会根据您的建议寻找最佳方式来保护我的API。感谢您的帮助。我会让你知道我会怎么做。 – 2013-05-22 22:54:14

相关问题