2016-09-29 20 views
0

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はこのシナリオをサポートしていないようです。 何か提案がありますか?

答えて

1

Microsoft.Data.SqliteでSQLCipherとフレンドを使用するためのヒントについては、Encryption in Microsoft.Data.Sqliteの記事を参照してください。

EFコアで使用する最も簡単な方法は、おそらく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)を見てください。わずかなオーバーヘッドでシームレスな完全なDB暗号化を提供します。 Visual Studioで使用するためのVSIXを構築するのは苦痛です。自分でビルドしたくない場合は、https://www.zetetic.net/sqlcipher/からライセンスを取得できます。

関連する問題