【发布时间】:2018-05-03 05:24:56
【问题描述】:
我们正在为用户创建一个用户界面
1) 在数据库上运行 Select 语句(查询可以包括 Join 或子查询)
2) 同屏查看结果
现在我们正在检查输入字符串是否具有以下任何关键字 INSERT/UPDATE/DELETE/TRUNCATE/CREATE/ALTER/DROP/GRANT/REVOKE 语句,并在只有 SELECT 权限的 SQL 用户下执行查询数据库。
在只读用户下执行查询之前,是否有任何其他方法可以添加额外的保护层来验证查询?
谢谢
【问题讨论】:
-
基本上,不要让用户运行任何想写的查询!你会后悔的......
-
由于业务需要,我们无法避免这种情况。因此,我试图找到避免任何潜在安全相关问题的最佳方法。此工具将仅部署在 pre-prod 环境中,因此风险级别相对较低。
-
您可以通过使用事务来做到这一点。如果您得到任何受影响的行,则回滚事务。我检查了触发器(即如果对表的任何操作应用了任何触发器),触发器的效果也会回滚。
-
感谢您的建议,将尝试。
标签: c# asp.net sql-server-2016