使用SQLite数据库作为数据交换格式有多安全?

时间:2016-06-20 12:20:16

标签: sqlite security

SQLite网页is recommending SQLite为“优秀的应用程序文件格式”。 SQLite对无效数据库文件有多强大?恶意用户是否可以创建一个损坏的数据库文件,该文件会导致远程代码执行,还是数据库被主动测试和保护?

我担心以这种格式创建恶意文件要比使用xml或json文件容易得多。如果将Sqlite用作数据交换格式,这似乎很重要。

1 个答案:

答案 0 :(得分:3)

documentation说:

  

有许多测试用例可以验证SQLite是否能够处理格式错误的数据库文件。这些测试首先构建格式良好的数据库文件,然后通过SQLite之外的某些方式更改文件中的一个或多个字节来添加损坏。然后SQLite用于读取数据库。在某些情况下,字节更改位于数据中间。这会导致数据库的内容发生更改,同时保持数据库格式正确。在其他情况下,修改文件的未使用字节,这对数据库的完整性没有影响。有趣的情况是定义数据库结构的文件的字节何时发生变化。格式错误的数据库测试验证SQLite发现文件格式错误并使用SQLITE_CORRUPT返回代码报告它们,而不会溢出缓冲区,解除引用NULL指针或执行其他不良行为。

当然,这不能防止有人将错误的数据放入文件中,或者当程序从数据库中读取意外数据时会出现意外行为。