在阅读了很多主题以及有关如何通过Android应用程序访问外部数据库(MySQL)的stackoverflow问题后,我的问题是:如何确保只有MY应用程序才能从该数据库中检索数据?一切都与安全有关。
为了访问该数据库,我打算在我的服务器上创建一个小PHP文件,用作我的应用程序和我的数据库之间的接口。但是,如果有人可以看到使用的URL,那么他也可以与我的数据库进行交互。那么,我该如何防止呢?
谢谢。
答案 0 :(得分:3)
首先,我建议你使用HTTPS
传输协议,说实话,即使用secret
(有特殊标志等)保护的自签名证书也是一个很好的保护。
然后您在服务器上创建验证此证书的Web服务(确保您没有硬编码证书秘密)并且瞧。
修改
假设您正在谈论Android,我将为您提供keytool
教程Here。我还假设你知道你必须创建自定义HTTPS
处理程序才能将证书放入请求中,如果你不知道怎么做我可以在我回家后立即发布它(我把我的项目放在我的私人电脑上)。服务器端证书验证的部分是Here
答案 1 :(得分:0)
如果攻击者的动机很强,那么您就无法通过外部API将数据库的访问权限仅限于您的应用。
你可以更难(例如使用存储在你的应用程序中的攻击者必须提取的秘密;模糊你的应用程序;使用Google's Play services;等等)你可以创建威慑(限制使用的许可)您的API),但从根本上说,您需要为其他人做好准备,以便能够向您的API发送看似来自您的应用的请求。
哪种方法组合适当取决于第三方访问的后果对您有何影响。
Twitter是一个有趣的案例研究,使用许可来控制第三方访问其API。没有什么可以阻止有人创造一个假装成为官方客户的客户,除了威慑力,如果他们变得足够大,让Twitter注意到,他们将通过合法渠道跟随他们。