保護UWP應用程序中的SQLite數據庫

.net-4.6 c# entity-framework-core uwp

它是一個使用SQLite數據庫的UWP應用程序。下面是這個應用程序的依賴項:

{
    "dependencies": {
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2",
    "Microsoft.Xaml.Behaviors.Uwp.Managed": "1.1.0",
    "Newtonsoft.Json": "8.0.3",
    "Template10": "1.1.*"
    },
    // ...
}

要求是:“ [...]有一個密碼可以從應用程序或任何其他可以打開SQLite數據庫的應用程序訪問數據庫 ”。

實體框架核心似乎不支持這種情況。 有什麼建議嗎?

一般承認的答案

有關使用SQLCipher和使用Microsoft.Data.Sqlite的朋友的提示,請參閱Microsoft.Data.Sqlite帖子中的我的加密

與EF Core一起使用它的最簡單方法可能是使用與DbContext的開放連接。

class MyContext : DbContext
{
    SqliteConnection _connection;

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        _connection = new SqliteConnection(_connectionString);
        _connection.Open();

        var command = _connection.CreateCommand();
        command.CommandText = "PRAGMA key = 'password';";
        command.ExecuteNonQuery();

        options.UseSqlite(_connection);
    }

    protected override void Dispose()
    {
        _connection?.Dispose();
    }
}

熱門答案

看看SQLCipher( https://github.com/sqlcipher/sqlcipher )。它提供無縫的完整DB加密,而且開銷很小。構建用於Visual Studio的VSIX是一件痛苦的事。如果您不想自己構建它,您可以從https://www.zetetic.net/sqlcipher/獲得許可。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow