【问题标题】:How can I prevent users running UPDATE statements via a query builder如何防止用户通过查询生成器运行 UPDATE 语句
【发布时间】:2013-07-26 13:12:40
【问题描述】:

我们正在将报告框架构建到我们的应用程序中,这需要使用查询构建器。最终,我们希望高级用户能够构建用于填充报表数据集的 SELECT 查询。

数据集是使用DataAdapter(MSSQL 或 SQLite)构建的。有什么工具我们可以用来确保最终用户构建的查询只能是 SELECT 语句?

编辑:

如上所述,我们将 SQLite 作为我们支持的后端之一 不能在此平台上设置数据库权限。

【问题讨论】:

    标签: c# sql reporting


    【解决方案1】:

    为数据库设置正确的权限。这是最好的解决方案。

    编辑:

    对于 SQLLite,您可以在文件系统中设置文件的只读权限。

    【讨论】:

      【解决方案2】:

      只给执行 SQL 的用户db_datareader 权限,以确保他们除了读取数据之外不能做任何事情。

      此问题提供了有关如何执行此操作的更多信息: How to give a user only select permission on a database

      【讨论】:

        【解决方案3】:

        如果查询构建器是在内部完成的,并且如果您的查询构建器返回一个字符串中的 SQL 语句,那么您可以通过查找更新语句 keyworks 或使用正则表达式来解析它,如果您想让用户免于麻烦创建更新查询然后意识到他们无法运行它,那么您应该考虑在他们创建查询时连续进行此检查。或者,您可以使用第三方查询生成器,例如:http://www.activequerybuilder.com/,不幸的是,我相信它不支持除 Select 语句之外的任何其他内容,但它可能值得一试。

        【讨论】:

          【解决方案4】:

          我认为您所要做的就是包装 QueryBuilder 并仅公开允许的操作。 我不好做相反的想法,比如让用户构造一个查询,最后你告诉他这是不允许的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-28
            • 1970-01-01
            • 2020-02-22
            • 2011-12-04
            • 2018-08-03
            • 1970-01-01
            相关资源
            最近更新 更多