首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SQL查询限制为SELECT操作ASP.net C#

将SQL查询限制为SELECT操作ASP.net C#
EN

Stack Overflow用户
提问于 2018-05-03 13:24:56
回答 3查看 475关注 0票数 0

我们正在为用户创建一个UI来

1)在数据库上运行Select语句(查询可以包括Join或子查询)

2)同屏查看结果

现在,我们正在检查输入字符串是否包含以下任何关键字INSERT/UPDATE/DELETE/TRUNCATE/CREATE/ALTER/DROP/GRANT/REVOKE语句,并在只有数据库SELECT权限的SQL user下执行查询。

在reading user下执行查询之前,有没有其他方法可以添加额外的保护层来验证查询?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2018-05-03 13:31:01

SQL

  • 确保参数用于为select语句提供输入(避免注入)。尽管只有SELECT权限的用户无论如何都不能执行,但这也将确保输入是正常的。
  1. 确保任何与数据库相关的错误都不会直接在屏幕上输出
票数 0
EN

Stack Overflow用户

发布于 2018-05-03 13:32:24

我假设不是所有的应用程序用户都是有效的数据库用户。

您需要创建2个数据库登录。用户应该只拥有db_datareader权限,该权限应该用于运行查询。在您的代码中,处理SqlException以查看最终用户是否尝试执行select语句以外的其他语句。

应该有另一个数据库登录,应用程序代码应该使用它来执行任何其他DML操作。

票数 0
EN

Stack Overflow用户

发布于 2018-05-03 13:34:50

与其让人们编写任何他们想要的命令,只检查命令中你认为可能有害的一些单词,为什么不创建一个‘查询生成器’,它只能有一个操作(select),来自t个表(其中t是可用表数),并具有所需的列。您可以添加一些包含可用操作(在您的情况下选择)、可用表和可用列的下拉列表。这样,您就可以使用给定的输入自己生成查询,而不需要让用户直接向您的服务器写入命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50147519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档