2012-02-21 126 views
0

我在网上遇到了一些在线教程,解释了如何从Android应用程序连接到MySQL,但它们有点表面。如何从Android应用程序连接到MySQL数据库

如果我只是写SQL和发送/在后接受它,它似乎有问题的几个原因:

1)硬编码SQL具有明显的问题有 有关发送SQL 2)安全问题 - 是安全的发送该请求?还是应该只通过SSL来完成? 3)要连接到数据库,为了插入东西,我需要在应用程序内部的数据库连接信息 - 是否安全?代码可以被黑客窃取设备和应用程序读取吗?

什么是去连接和使用远程数据库从Android应用程序的最佳方式?

谢谢!

回答

1

裹一切的API中,要么用公钥/私钥加密或基于令牌的系统管理认证。你永远不应该,有史以来以任何方式接受原始SQL,从任何设备或网站形状或形式。大多数情况下,如果您需要实时远程数据来运行,您应该重新考虑应用程序工作流程,并处理稍有陈旧的数据,或者由于可能的点状连接而在后台提供信息。即使是API也是一项昂贵的工作,所以它不应该经常发生。

加入一些上面你可以有两件事情的想法。公共/私人钥匙在http://en.wikipedia.org/wiki/Public-key_cryptography上阅读。基本概念是将公钥存储在设备上,然后在安装了存储在设备上的应用程序后(虽然没有编码到应用程序中)来协商私钥。此密钥是您必须保护的密钥,因此应在安装时进行协商并与应用程序的生命周期一起存储。您可以使用设备的唯一散列(例如设备ID)和用户可以设置的密码联系API。这样,如果数据被擦除,由于密码存储在服务器上,您可以验证生成新密钥的请求对于该设备ID是否有效,并防止攻击者试图破坏每个人的密钥。

显然,这仍然容易受到别人拦截初始请求,但如果你使用的是HTTPS(你应该),那么它应该可以缓解大部分的这些问题。

你必须确保攻击者只是不能在随机设备ID请求发送到生成新的密钥,因为这将破坏该哈希,这就是为什么密码设置是非常重要的实际用户的设备。当然,他们也可以针对目前尚未注册的设备ID做到这一点,但是您可以轻松实现对初始API的限制和黑名单。

有很多事情可以做,但根据您的敏感数据,它可能是矫枉过正。您必须做出判断,并确定您试图保护数据的人。

+0

谢谢!私钥的想法听起来不错,但它会如何工作?我仍然需要将它存储在应用程序的某个地方,对吧?你能解释一下更多的细节吗?谢谢! – Genadinik 2012-02-21 01:21:58

+0

更新了更多细节。 – methodin 2012-02-21 02:06:46

1

使用通过其与数据库通信的web服务。最终用户客户端通常不通过互联网与数据库进行通信。 Multitier_architecture

+0

是的,这是有道理的,但如果我需要插入一些数据呢?如何验证插入的调用是否具有权限? – Genadinik 2012-02-21 01:17:15

+0

制定了某种许可制度作为方法已经解释了 – 2012-02-21 01:26:15

相关问题