苹果的iOS设备大量使用数据库文件来存储包括通讯录、短信、电子邮件以及一些其他敏感数据在内的信息sqlite数据库软件十一种开源的、公共域的数据包。标准情况下,sqlite数据库的文件扩展名是.sqlitedb ,但也有数据库使用了.db的扩展名,或者其他的扩展名。(但我们知道在类Linux系统中,那个扩展名并不重要。)在我们开发中也经常用会碰到有一些大量数据需要存储,比如用来缓存图片、歌曲、电影等。
上一篇文章说到如何获取手机联系人,但获取到之后是一个sqlitedb文件,做正向开发的都知道,这是一个sqlite 的数据库,如果不确定可以用命令查看一下
$ file cacheImage.db
cacheImage.db: SQLite 3.x database
目前市场上有一些很好的图形化工具如(mesasqlite)。mac os X 已经包含了一个sqlite命令行客户端工具。
从命令行调用sqlite3客户端工具:
$ sqlite3 cacheImage.db
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite>
sqlite> .exit
.exit 退出。回到终端提示符下
一些常用的操作命令:
sqlite> .tables
imageCache
例举出数据库中所有的表。
sqlite> create table messages(message_id interger primary key,
...> sender,
...> subject,
...> _to,
...> cc,
...> bcc);
创建一个表,此时可以再拿上边那个查看所有表的名再次查看。
然后就是一些基本增删改查命令。
在做正向开发的时候,我们经常用到数据的存储,很多时候是会用到sqlite3 的。同样,在iPhone设备上存在着一些敏感的数据,他们也是用sqlite存储的。比如联系人地址薄,攻击者就对它很感兴趣。
联系人地址薄包含设备中存储的所有联系人的所有记录。在我们的开发中获取联系人的时候会用到AddressBookUI.framework 和AddressBook.framework这两个框架。它的数据库名字就叫做AddressBook.sqlitedb。 可以 从/private/var/mobile/Library/AddressBook/AddressBook.sqlitedb 中可以找到地址薄数据库。联系人都是以明文的形式存储在sqlite中。我们可以用selector语句查询就可以得到相关的信息。
在我们自己开发的应用中也经常会用到sqlite。那如何保护我们的数据。
1)对数据进行加密保护。
2)根据需要,擦除SQL记录。