gpt4 book ai didi

sql - 使用内部SELECT查询“清理”任意SQL?

转载 作者:行者123 更新时间:2023-12-03 18:45:21 29 4
gpt4 key购买 nike

我有一个系统,希望人们对具有多个表的多个数据库进行任意选择查询。

我可以通过简单地将查询嵌入到子查询(即SELECT * FROM ( $USER_SELECT_QUERY ))中来“清理”查询吗?

这将允许用户执行任何类型的SELECT查询,但将对任何INSERTUPDATEDELETEEXEC等查询产生语法错误。您能否提出某种会修改/插入/删除数据的查询,或揭示有关主机系统的其他意外细节,例如目录列表或其他内容?

假设:


用户可以访问所有附加数据库中的所有数据。
适当配置/监视查询时间和资源使用情况以缓解(D)DOS攻击。
(在我的情况下,数据库是只读的sqlite文件)


另请注意,我完全了解允许用户执行任意SQL的一般危险,因此我想强调一点,我非常特别地询问使用select子查询清理查询的限制。

最佳答案

要防止大多数此类语句,请使用authorization callback

您也可以使用sqlite3_stmt_readonly()防止任何写操作。

您应该确保没有任何危险的用户定义函数或虚拟表,并且禁用了load_extension()fts3_tokenizer()之类的功能。

关于sql - 使用内部SELECT查询“清理”任意SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38201313/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com