我希望给我的网站用户任意只读访问SQLite3数据库的权限,而不允许他们写入数据库或造成任何其他损害。如何做到?
将db文件设置为只读有一定帮助,但是像"ATTACH"、".load"和".output"这样的命令允许人们读/写其他未受保护的文件。
当然,如果我知道所有这样的命令,我会过滤它们,但我最担心的是我没有想到的命令。
我尝试简要修改sqlite3的源代码以禁止写入,但这比看起来更难:即使SELECT语句似乎也进行了一些内部的INSERTS等操作。
注意:我考虑了DOS攻击,并将cputime限制在5秒左右。我主要关心的是文件损坏/黑客行为,而不是DOS攻击。
chroot()可能有效,但似乎太极端了。
你有什么想法吗?
编辑:哇,我真的在三年前问过这个问题?
将db文件设置为只读有一定帮助,但是像"ATTACH"、".load"和".output"这样的命令允许人们读/写其他未受保护的文件。
当然,如果我知道所有这样的命令,我会过滤它们,但我最担心的是我没有想到的命令。
我尝试简要修改sqlite3的源代码以禁止写入,但这比看起来更难:即使SELECT语句似乎也进行了一些内部的INSERTS等操作。
注意:我考虑了DOS攻击,并将cputime限制在5秒左右。我主要关心的是文件损坏/黑客行为,而不是DOS攻击。
chroot()可能有效,但似乎太极端了。
你有什么想法吗?
编辑:哇,我真的在三年前问过这个问题?
从那时起,我实际上写了一个程序来做这件事。
我认为这是相当安全的(但我可能错了)。