Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQLite varsayılan olarak veritabanı dosyalarını şifrelemeyi desteklemez. Bunun yerine SQLCipher, SQLiteCrypt veya wxSQLite3 gibi değiştirilmiş bir SQLite sürümü kullanmanız gerekir. Bu makalede SQLCipher'ın desteklenmeyen, açık kaynaklı bir derlemesinin kullanılması gösterilmektedir, ancak bilgiler genellikle aynı deseni izlediğinden diğer çözümler için de geçerlidir.
Yükleme
dotnet remove package Microsoft.Data.Sqlite
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher
Şifreleme için farklı bir yerel kitaplık kullanma hakkında daha fazla bilgi için bkz . Özel SQLite sürümleri.
Anahtarı belirtin
Yeni bir veritabanında şifrelemeyi etkinleştirmek için bağlantı dizesi anahtar sözcüğünü Password
kullanarak anahtarı belirtin. Kullanıcı girişinden değeri eklemek veya güncelleştirmek ve bağlantı dizesi ekleme saldırılarından kaçınmak için kullanınSqliteConnectionStringBuilder.
var connectionString = new SqliteConnectionStringBuilder(baseConnectionString)
{
Mode = SqliteOpenMode.ReadWriteCreate,
Password = password
}.ToString();
Önemli
Microsoft, kullanılabilir en güvenli kimlik doğrulama akışını kullanmanızı önerir. Azure SQL'e bağlanıyorsanız önerilen kimlik doğrulama yöntemi Azure kaynakları için Yönetilen Kimlikler'dir.
İpucu
Mevcut veritabanlarını şifreleme ve şifresini çözme yöntemi, kullandığınız çözüme bağlı olarak değişir. Örneğin, SQLCipher'da sqlcipher_export()
işlevini kullanmanız gerekir. Ayrıntılar için çözümünüzün belgelerine bakın.
Veritabanını yeniden anahtarlama
Şifrelenmiş bir veritabanının anahtarını değiştirmek istiyorsanız, bir PRAGMA rekey
deyimi oluşturun.
Ne yazık ki SQLite, deyimlerdeki PRAGMA
parametreleri desteklemez. Bunun yerine, SQL ekleme işlemini quote()
önlemek için işlevini kullanın.
var command = connection.CreateCommand();
command.CommandText = "SELECT quote($newPassword);";
command.Parameters.AddWithValue("$newPassword", newPassword);
var quotedNewPassword = (string)command.ExecuteScalar();
command.CommandText = "PRAGMA rekey = " + quotedNewPassword;
command.Parameters.Clear();
command.ExecuteNonQuery();