我的应用程序会经常连接到web服务以获取json中的一些数据。android通过web加密json数据
有没有一种方法可以在服务器端加密这些数据并在应用程序端进行解密,以便传输的数据安全可靠?另外,如果应用程序带有自己的数据库(sqlite数据库文件),是否有可能任何使用此应用程序的人查看此数据库(表,字段和内容)?
问候, 萨班
我的应用程序会经常连接到web服务以获取json中的一些数据。android通过web加密json数据
有没有一种方法可以在服务器端加密这些数据并在应用程序端进行解密,以便传输的数据安全可靠?另外,如果应用程序带有自己的数据库(sqlite数据库文件),是否有可能任何使用此应用程序的人查看此数据库(表,字段和内容)?
问候, 萨班
传输加密数据的最简单方法是使用SSL(即https)进行应用程序和Web服务之间的通信。
如果您需要为服务器设置自己的自签名证书(而不是购买一个),您可能会遇到让Android与之交谈的问题,但这是可行的。有关提示,请参见this SO question。
关于阅读数据库,这可能是可能的。如果足够确定,我会假设攻击者可以访问数据库。如果您希望数据非常安全,则必须将数据库存储在加密文件中,并且每次打开应用程序时都要求用户输入密码。 你必须决定你真正需要多少安全。
但是,当您通过网络传输数据时,您绝对应该使用SSL加密数据。
我使用Base64编码和解码在网络到encryt数据。
根据您使用的Web服务的类型,它将会或不会进行Base64编码和解码。你可以随时在谷歌上查看别人编写的代码。
取决于您定位的Android版本。
从API级8个,最多:http://developer.android.com/reference/android/util/Base64.html
对于较低:http://www.frankdu.com/notes/2011/01/27/base64-encoding-with-android-2-1-or-earlier/
你也可以自己写自己的编码和解码系统。 ;)
你可以使用加密来加密/解密json在android和server.In它非常简单和安全。使用Base64并不是一种有效的方式,因为任何人都可以解密。在此,您可以使用密钥来加密和解密字符串。如果使用错误的密钥解密,输出将会错误。
感谢您提供的解决方案...我现在看看你的解决方案... – Sapan 2011-05-05 04:07:03
感谢您提供的答案。根据您的情况,资产文件夹中的应用程序提供的数据库可以被攻击者读取。我提供了一个初始数据库,然后让用户在服务器上使用db进行同步。在我的应用程序启动时,我将资产文件夹中的数据库文件复制到/ data/data/package/databases文件夹。那么攻击者是否也可以访问这个数据库呢?我试图理解的是,如果我给我的应用程序提供最小的数据库,然后让用户与服务器同步。因此,即使通过应用程序访问打包数据库,他也不会获得太多信息。 – Sapan 2011-05-05 04:23:14
放置数据库的位置并不重要,它可能仍然可以由确定的攻击者_访问phone_读取,除非您加密和密码保护数据库。 – uvesten 2011-05-05 07:44:14