如何让.NET 7 MAUI安卓应用的SQLite数据库仅自身可读?
MAUI安卓端SQLite数据库仅自身可访问的配置方法
1. 把数据库放在应用私有目录里
安卓系统中,应用的私有内部存储目录(比如/data/data/[你的应用包名]/files)下的文件,默认只有本应用能读写,其他应用和普通用户都无法直接访问。在MAUI里直接用FileSystem.AppDataDirectory就能拿到这个路径,别自己硬编码路径。
修改你的数据库初始化代码:
// 替换原有的"some path" string dbPath = Path.Combine(FileSystem.AppDataDirectory, "your_db_name.db"); Database = new SQLiteAsyncConnection(dbPath, Constants.OpenFlags);
2. 不要申请不必要的外部存储权限
如果你的应用不需要访问外部SD卡的文件,就别在Platforms/Android/AndroidManifest.xml里添加READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE权限——一旦使用外部存储,数据库文件就可能被其他应用或用户通过文件管理器找到,完全失去私密性。
3. 可选:调整SQLite打开标志
你当前使用的SharedCache是允许多线程共享缓存,要是你的应用没用到多线程共享数据库的场景,可以把这个标志去掉,虽然不影响文件访问权限,但能简化配置:
public const SQLite.SQLiteOpenFlags OpenFlags = SQLite.SQLiteOpenFlags.ReadWrite | SQLite.SQLiteOpenFlags.Create;
4. 敏感数据额外加密(可选)
如果存储的是账号、密码这类敏感内容,光靠系统权限还不够,可以给数据库加密码。用SQLite-net配合SQLCipher扩展即可,初始化时添加密码:
// 带密码的数据库连接 Database = new SQLiteAsyncConnection(dbPath, Constants.OpenFlags, password: "你的安全密码");
内容的提问来源于stack exchange,提问作者Thomas Carlton
相关产品推荐
相关产品推荐

