gpt4 book ai didi

sql - 是否有 SQL 执行关键字列表,例如。插入、修改

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:43 26 4
gpt4 key购买 nike

我有一个允许用户执行 SQL 脚本的程序。我有一个用户登录到该程序,但要求阻止任何执行,即使它是管理员用户也是如此。

我的意思是用户不能修改表等。通常我建议将所有用户连接设置为只读,但程序中有一个元素需要能够执行 INSERT。

我想检测用户可能执行的关键字,例如/INSERT、UPDATE、ALTER,并希望某处有定义的列表。

最佳答案

从您的问题中不清楚您为什么不为此使用权限:根据需要向用户授予 SELECT 和/或 INSERT 权限。您还可以将关键操作包装在存储过程中,并仅对这些过程授予 EXECUTE,如果这更适合您的需要的话。

解析实际的 SQL 很困难,因为您不能只搜索某些词,还必须建立它们的上下文。以 'DELETE' 为例:

-- I guess you don't want this
delete from dbo.SomeTable
-- but maybe you do want this?
select * from dbo.SomeTable where Status = 'deleted'

恶意(或只是好奇)用户肯定会乐于测试您的解析代码的限制,看看他们可以用 EXEC、sp_executesql、OPENQUERY 等做什么。

权限(可能与存储过程一起使用)是这里真正的解决方案,因为您建议的替代方案将很难编写和维护,并且几乎肯定会有漏洞。

关于sql - 是否有 SQL 执行关键字列表,例如。插入、修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9275692/

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