Защитете базата данни на sqlite от изтегляне

Няма решение, което да предотврати изтеглянето на предварително заредена база данни в джейлбрейк iPhone.
Всякакъв начин да премахнете вашата SQLite DB от iPhone?

Мисля, че единственият начин е да шифроваме предварително заредена база данни (може би да шифроваме само данните в отделни полета, където не е необходимо да търсим) и да дешифрираме само когато View трябва да покаже данните .
(разбира се, използвайки личен ключ)

Някой знае ли как да направя точно и дали има по-добро решение?
Използвам Core Data, но не мога да дешифрирам NSString атрибути, мога да дешифрирам само NSData, но не е лесно да се създаде sqlite db с Data ( BLOB) полета, съдържащи текстов шифрован низ.

Благодаря!


person ndman    schedule 05.10.2012    source източник
comment
Как се създава вашата база данни? Това само .db ресурс ли е в комплект с вашето приложение? Теглите ли го от сървър? Генерирате ли го с приложението (пишете го с приложението)? По принцип кой софтуер е отговорен за записването на чувствителните данни в базата данни? Приложението за iOS или друг софтуер?   -  person Nate    schedule 06.10.2012
comment
Благодаря Нейт! Използвам Core Data с предварително зареден sqlite db. Най-доброто може да бъде да експортирате csv от FileMaker и да импортирате в sqlite таблици (но извършвайки само тази процедура, очевидно всички данни са некриптирани). Приложението трябва само да чете данни от този обект. Може би в бъдеще приложението може да записва обикновени данни в друг обект. Някакви идеи? Благодаря много!   -  person ndman    schedule 06.10.2012


Отговори (1)


Може би намерих решение!

Изпробвам този код на iOS5 и iOS6 и работи чудесно. Сега мога да криптирам NSString с лична ключова дума и да получа NSString (с кодиране AES256 и Base64). Всъщност кодът се нуждае само от малка модификация, за да работи с ARC.

https://github.com/dev5tec/FBEncryptor.git

Ако някой намери по-добро решение, моля, напишете тук.

За най-добро решение би могло да бъде много полезно, ако има начин да експортирате криптирани полета в csv данни от FileMaker или друго и да импортирате в sqlite db. По този начин можем да заредим предварително sqlite db в Core Data. Приложението може да дешифрира полетата точно когато изгледът трябва да се покаже на екрана.

person ndman    schedule 06.10.2012