iOS
Intégration SqlCipher
Recherche…
Introduction
SQLite est déjà une API populaire pour le stockage de données persistant dans les applications iOS. Le développement est donc évident. En tant que programmeur, vous travaillez avec une API stable, bien documentée, et de nombreux bons wrappers sont disponibles dans Objective-C, tels que FMDB et les données de base cryptées. Tous les problèmes de sécurité sont découplés proprement du code d'application et gérés par la structure sous-jacente.
Remarques
- Ouvrez le terminal, accédez au répertoire racine de votre projet et extrayez le code du projet SQLCipher à l'aide de Git:
$ git clone https://github.com/sqlcipher/sqlcipher.git
- Faites un clic droit sur le projet et choisissez "Ajouter des fichiers à" Mon application "" (l'étiquette variera en fonction du nom de votre application). Puisque nous avons cloné SQLCipher directement dans le même dossier que votre application iOS, vous devriez voir un dossier sqlcipher dans votre dossier de projet racine. Ouvrez ce dossier et sélectionnez sqlcipher.xcodeproj
Sélectionnez le volet Paramètres de construction. Dans le champ de recherche, saisissez "Chemins de recherche d'en-tête". Double-cliquez sur le champ sous la colonne cible et ajoutez le chemin suivant: $ (PROJECT_DIR) / sqlcipher / src
Commencez à taper "Autres indicateurs de liaison " dans le champ de recherche jusqu'à ce que le paramètre apparaisse, double-cliquez pour le modifier et ajoutez la valeur suivante: $ (BUILT_PRODUCTS_DIR) /libsqlcipher.a
Commencez à taper "Other C Flags" dans le champ de recherche jusqu'à ce que le paramètre apparaisse, double-cliquez pour le modifier et dans la fenêtre contextuelle, ajoutez la valeur suivante: -DSQLITE_HAS_CODEC
Développez les dépendances cibles et cliquez sur le bouton + à la fin de la liste. Dans le navigateur qui s'ouvre, sélectionnez la cible de la bibliothèque statique sqlcipher :
- Développez Link Binary With Libraries, cliquez sur le bouton + à la fin de la liste et sélectionnez la bibliothèque libsqlcipher.a .
- Enfin, également sous Link With Libraries, ajoutez Security.framework .
Intégration du code:
Intégration pour ouvrir la base de données à l'aide d'un mot de passe.
-(void)checkAndOpenDB{
sqlite3 *db;
NSString *strPassword = @"password";
if (sqlite3_open_v2([[databaseURL path] UTF8String], &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK) {
const char* key = [strPassword UTF8String];
sqlite3_key(db, key, (int)strlen(key));
if (sqlite3_exec(db1, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) {
NSLog(@"Password is correct, or a new database has been initialized");
} else {
NSLog(@"Incorrect password!");
}
sqlite3_close(db);
}
}
- (NSURL *)databaseURL
{
NSArray *URLs = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *directoryURL = [URLs firstObject];
NSURL *databaseURL = [directoryURL URLByAppendingPathComponent:@"database.sqlite"];
return databaseURL;
}