我正在我的 android 应用程序中使用 sqlite。
我在问这个荒谬但有效的问题。
- 任何人都可以复制我存储在内部存储中的数据库吗?
- SD卡制作数据库的安全性如何?
您必须在一段时间后将数据库发送到服务器,因为 SD 卡不够安全。在复制整个数据库文件夹的代码下方。
public static void copyDirectoryOneLocationToAnotherLocation(File sourceLocation, File targetLocation)
throws IOException {
if (sourceLocation.isDirectory()) {
if (!targetLocation.exists()) {
targetLocation.mkdir();
}
String[] children = sourceLocation.list();
for (int i = 0; i < sourceLocation.listFiles().length; i++) {
copyDirectoryOneLocationToAnotherLocation(new File(sourceLocation, children[i]),
new File(targetLocation, children[i]));
}
} else {
InputStream in = new FileInputStream(sourceLocation);
OutputStream out = new FileOutputStream(targetLocation);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
第二个问题:不是很安全。如果可以的话,使用内部存储,它更安全。任何程序都可以编辑 sd 卡上的任何内容,因此只需将卡插入计算机,挂载 sqlite 数据库,他们就可以完全访问数据库,包括读/写/编辑。
理论上,内部存储是安全的,但是,如果一个人有一个根设备,他们甚至可以进入。不过,人数不会很多,你只需要留意它。
如果您真的必须找到针对每次尝试的安全解决方案,您可能会研究加密数据库。
第一个问题:当然,您可以复制数据库,就像复制任何文件一样。
您可以将数据库复制到 sdcard,但它不安全。任何读取 SD 卡的应用程序或外部设备都可以访问它。
任何有权访问 SD 的人在技术上都可以复制您的 sqlite 文件。我认为内部存储不够安全(因为您可以根设备并具有管理访问权限,因此您几乎可以在那里做所有事情)。无论如何,这里有一个关于如何将你的 sqlite 文件复制到内部存储的链接