我想给我的网站用户任意只读访问SQLite3数据库,而不让他们写入数据库或做任何其他损害.怎么样?
使db文件只读有一点帮助,但"ATTACH",".load"和".output"等命令允许人们读/写其他文件,这些文件可能不受保护.
当然,如果我知道所有这些命令,我只会过滤它们,但我最担心的是我没有想过的命令.
我曾尝试简单地改变sqlite3的源代码以禁止写入,但这比它看起来更难:即使SELECT语句似乎做了一些内部的INSERTS/etc.
注意: 我已经考虑过DOS攻击,并且会将cputime限制为5s或者其他什么.我主要担心的是文件损坏/"黑客攻击",而不是DOS.
chroot()可能有用,但看起来很极端.
思考?
编辑:哇,3年多前我真的问过这个吗?
从那以后,我实际上写了一个程序来做这件事.
我认为这是相当安全的(但我可能是错的).
这是一个示例查询.