如果文件已存在,则使 sqlite3_open() 失败



我正在开发一个使用SQLite作为其数据文件的应用程序。我只是在SQLite合并源中链接,直接使用它。

如果用户选择创建新文件,我会检查该文件是否已存在,询问用户是否要覆盖该文件,如果他们说是,则将其删除。然后,我调用sqlite3_open_v2(),并将标志设置为SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE以创建和打开新的数据文件。

这很好,除了,如果恶意用户在被删除的文件和SQLite打开它之间重新创建我尝试打开的文件会发生什么?据我所知,SQLite只会打开现有文件。

我的程序不涉及密码或任何类型的安全功能。这是一个非常简单的应用程序,考虑到所有因素。但是,我读过很多故事,其中有人使用一个简单的应用程序,其中包含一个晦涩的错误来绕过某些系统的安全性。

那么,最重要的是,如果文件已经存在,有没有办法使sqlite3_open()失败?

你也许可以修补对 open(2( 的O_EXCL选项标志的支持。如果您在支持SQLite的平台上使用SQLite。

最新更新