2016-09-29 7 views
0

Приложение UWP с использованием базы данных SQLite. Ниже приведено зависимости для этого приложения:Защита базы данных 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» ,

Ядро Entity Framework не поддерживает этот сценарий. Любое предложение?

ответ

1

Для получения дополнительных сведений об использовании SQLCipher и друзей с Microsoft.Data.Sqlite см. Мое сообщение Encryption in 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(); 
    } 
} 
+0

Почему я не могу найти уже скомпилированные библиотеки? –

+0

Я обнаружил, что сообщество SQLite считает, что создание собственного - это лучше всего. Затем вы указываете точные функции и конфигурацию, которые вы хотите. Но [wxSQLite3] (https://github.com/utelle/wxsqlite3/releases) имеет несколько двоичных файлов. (Может не работать в UWP). – bricelam

+0

Это действительно разочаровывает @bricelam, что вместо того, чтобы сосредоточиться на приложениях, которые мы обычно создаем бесплатно, мы немного защищаем создаваемые нами данные, не тратя деньги и время. Я скучаю по дням SQL Compact. –

0

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