Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何防止黑客访问我的应用程序&x27;安卓上的数据库?_Android_Security - Fatal编程技术网

Android 如何防止黑客访问我的应用程序&x27;安卓上的数据库?

Android 如何防止黑客访问我的应用程序&x27;安卓上的数据库?,android,security,Android,Security,正如您所知,我们可以在根目录后访问android设备上的任何文件夹。我的应用程序有一个数据库和一些其他二进制文件。我知道我不能阻止用户查看我的文件和数据库。但有没有办法防止用户将其复制到其他android设备上非法使用?一个选项是加密存储在数据库中的数据。通常以明文形式存储,我相信Android也适用 来自安卓/谷歌 使用根手机的用户可以访问他们想要的任何文件。 否则,传统车载闪存位置中的数据库将被删除 安全 如果您想阻止(路由访问),唯一的选择就是对其进行加密。不管花多长时间 编辑: 我想说的

正如您所知,我们可以在根目录后访问android设备上的任何文件夹。我的应用程序有一个数据库和一些其他二进制文件。我知道我不能阻止用户查看我的文件和数据库。但有没有办法防止用户将其复制到其他android设备上非法使用?

一个选项是加密存储在数据库中的数据。通常以明文形式存储,我相信Android也适用

来自安卓/谷歌

使用根手机的用户可以访问他们想要的任何文件。 否则,传统车载闪存位置中的数据库将被删除 安全

如果您想阻止(路由访问),唯一的选择就是对其进行加密。不管花多长时间

编辑:

我想说的是,它永远不会完全安全。你可以让黑客们变得同样困难。您可以将解密密钥(仅)保存在服务器中(如果从服务器下载整个数据非常耗时),但应用程序需要网络连接才能工作。您可以将密钥保存在隐藏文件(文件名以.)中,但了解linux类型文件系统的根用户可以找到它们。或者,您可以按照Teovald在对该答案的评论中的建议,在运行时使用任何常量(如IMEI编号)的任何哈希算法生成密钥,但它也需要一些处理。你越想保护它,你就越需要做更多的工作来使用它。因此,这是一种50对50的情况,决策应该取决于一个人的需求。

除了加密(参见Krishnabhadra的回答)之外,确保关键数据的唯一方法是不让设备上的一切都存在。因此,您可以访问最关键的数据—始终仅在线

当然,这也有缺点,如果用户没有连接,你的应用程序并非都可用。您必须在确保数据安全不被窥探和允许即时脱机访问数据之间取得平衡


能否缓解前一个问题取决于数据。如果一切都很重要,则设备上不允许任何内容。用户会理解并勉强接受这一点。没有人想在他的设备上复制他的银行账户。但是,即使在脱机模式下,您也应该允许访问所有不重要的内容。

数据库存储在哪里?它保存在Android设备的默认文件夹中。请定义默认文件夹。阅读此处:默认文件夹为:/system/data/data//database/看起来像内部存储器。非根用户不应该能够访问它。即使这样,如果密钥在应用程序中烘焙,也可以通过反编译来检索它。@MisterSmith是的,但没有其他方法。任何有根手机的人都可以反编译apk并获得解密密钥。我们唯一能做的就是给他们制造麻烦。而且,反编译apk和读取纯文本文件是一回事。反编译sdk,搜索特定密钥,解密数据库并查看数据库是否为其他数据库。您可能希望检查用户是否为root用户,并且仅在用户为root用户时加密数据。但是,如果您希望保护数据并且用户可以访问它,那么这是唯一的选择@史密斯先生,这就是密钥不应该存储在普通xml中的原因。从几个不同的东西生成它,包括IMEI号码听起来是个不错的选择。绝对安全是不可能的。@Teovald您可能希望始终强制执行安全性。看看W*tsAp,他们在SD卡中加密dbs(但使用的是已经公开的主密码)。不需要是root用户就可以访问任何人的对话。@MisterSmith先生他们的问题还在于,他们将数据库放在SD卡上,这不是一个明智的选择(即使旧智能手机只有有限的应用空间这一事实使事情复杂化)。但是,如果数据是合理的,加密一切可能是最好的选择。