繁体   English   中英

将数据导入Android应用程序的最佳方法?

[英]Best way to get data into an android app?

只是一点点背景。 我是一名熟练的asp.net/c#/sql服务器程序员,他已经学习Android不到2天。

我们有一个现有的.net网站,它存储MS SQL Server 2008中的位置列表,我正在尝试创建获取这些位置并在Google Map上显示它们的Android应用程序。

问题实际上是如何让应用程序连接到SQL数据库。 我猜有几种选择......

1)应用程序和远程数据库之间的某种直接连接。

2)使用asp.net创建某种中间层,将数据转换为更适用于Android应用程序中的Java代码的东西(记住我几乎知道没有java),完全相同的是我们有.net为我们的网络应用程序提供JSON的代码。

3)创建某种Web服务,只返回Web服务器的XML结果。 我不知道如何保证这一点,以便只有Android应用程序可以请求数据。

任何有关最佳实践的帮助或建议都非常有用。 我想我只需指出一个好策略的总体方向,我就可以解决它。

我不知道如何保证这一点,以便只有Android应用程序可以请求数据。

你的问题比那更重要。

它与点(3)无关,它与您要选择的任何可能方法有关。

  • 如果您在Internet中公开任何类型的数据,则可以使用身份验证或不使用身份验证来访问它。
  • 如果使用身份验证访问它,则为每个用户提供一个凭据,或为多个用户提供一个凭据。
  • 一旦用户拥有凭证,它可以随意使用它,您不能限制它,只能完全阻止凭证本身。

现在,您将采用这种方式,即一个对所有用户都有效的凭证,即应用程序已获得它并使用它来获取数据。 用户自己现在可能不是这样的事实是无关紧要的。

请记住:通过默默无闻的安全措施不起作用。 如果你想破坏,朦胧只是“一个更烦恼”,它就像一个里面有贵重物品的黑暗房间:黑暗无济于事,但没有理由没有锁定。 有人会很快偷东西,这只是时间问题。

您的安全问题是网络基础架构和协议之一,而不是Android。 OAUTH正在成为实现这一目标的标准方式,并以谷歌为例,或许更好的模拟是访问Google Docs?

更多:

实际上实现握手等可能需要一些工作,具体取决于你想要的安全性。 同样,这不是一个真正的“Android事物”,因为它首先是一个架构挑战,一旦你做出了一些架构决策,你就可以实际实现你决定在Android或其他任何事情上做的事情。

从概念上讲,通过Web服务公开您的数据并从您的UI中消费它们就可以了。 您必须确定您的安全策略,OAuth或其他方面。

Android的原生LDAP支持很快就会到来( 很多人都想要它 ),这可能有助于安全性(即使用Exchange Server验证不同的用户凭据而不是使用应用程序的凭据)

与此同时,数据可能比它应该更容易访问。 它敏感吗?

您实际上无法连接到远程数据库,特别是如果它是MS SQL数据库(android只能处理SQLite)。

您知道要保护数据的最佳选择是在服务器端构建一个可以访问您的数据库的Java接口。

然后,您可以执行一些RMI,或者您可以使用套接字来发送和接收数据(包括加密数据)。

在保护数据的问题下,我将采取的解决任务的方法包括以下步骤:

  • 使用json Web服务在移动设备和数据库之间进行通信。 由于移动设备的网络连接不稳定,每次访问数据库时都必须重新建立数据库连接。 Web服务很好地将一个问题包装到数据库中。
  • 使用google gson将json解析为java数据对象,以便在应用程序中处理它们。
  • 使用您自己的叠加层创建Mapview ,以在地图上显示项目。

安全问题是我想到的很多问题。 如果要限制对数据库的访问,则需要应用程序在Web服务器上使用某种密钥进行身份验证。 问题是,有人可能只是打开你的应用程序并查找此密钥,然后重新构建您的应用程序中使用的流量。 您可以使用密钥与您的网络API进行https连接,这禁止其他人接入网络连接,但拥有电话的人始终可以访问该密钥。

你总是可以让攻击者变得更加困难,但你总是假装成一个手机应用程序,因为auth令牌需要在手机上。 使其变得更加困难的一些方法是:

  • 加密应用程序内部的密钥,这使得在类文件中快速搜索和轻松提取密钥变得更加困难。 但是只有一层隐藏,因为解密的密钥也必须在你的应用程序中。
  • 根据手机数据生成第二个密钥,添加imei的哈希值,电话号码等。问题是这个数据必须最初在服务器上注册,因此它可以简单地伪造。

如果您只是希望通过机器人获取数据来保护您的数据,那么服务器只会响应似乎来自手机的请求。 阻止对Web服务等进行数百次调用的单个IP

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM