Защита базы данных SQLite в приложении UWP

Это UWPприложение, использующее SQLite базу данных. Ниже приведены зависимости для этого приложения:

{
    "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 базу данных".

Entity Framework Core, похоже, не поддерживает этот сценарий. Есть предложения?


person JiBéDoublevé    schedule 29.09.2016    source источник


Ответы (2)


Советы по используя SQLCipher и друзей с 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();
    }
}
person bricelam    schedule 30.09.2016
comment
Я обнаружил, что сообщество SQLite считает, что лучше всего создавать свои собственные. Затем вы указываете точные функции и конфигурацию, которые вам нужны. Но wxSQLite3 содержит несколько двоичных файлов. (Может не работать на UWP) - person bricelam; 03.10.2016
comment
Это действительно разочаровывает @bricelam, что вместо того, чтобы сосредоточиться на приложениях, которые мы обычно создаем бесплатно, защита данных, которые мы создаем, невозможна без траты денег и времени. Я скучаю по временам SQL Compact. - person Juan Pablo Garcia Coello; 23.01.2017
comment
Я тоже скучаю по SQL Compact. - person bricelam; 23.01.2017

Взгляните на SQLCipher (https://github.com/sqlcipher/sqlcipher). Он обеспечивает бесшовное полное шифрование БД с небольшими накладными расходами. Очень сложно создать VSIX для использования с Visual Studio. Если вы не хотите создавать его самостоятельно, вы можете получить лицензию на сайте https://www.zetetic.net/sqlcipher/.

person Igor Kulman    schedule 29.09.2016