0

我需要(重新)为我正在处理的应用程序的用户开发一个工具,该工具位于 ASP.NET 4.5.2 / MVC 5.2.3 中并使用 Entity Framework 6。

该工具应该允许授权用户编辑 SQL 查询,并允许低权限用户运行它们。我担心这种工具的安全性,即使 Web 应用程序只能作为 Intranet 访问。

任何给定的查询只能是 aSELECT并且可以JOIN在多个表上具有 s。

是否有任何 EF6 特定功能允许我检查甚至限制一个 sql 字符串只做一个SELECT
我是否应该在数据库中有一个特定用户,该用户只允许SELECT作为该用户执行这些查询并为这些查询使用单独的连接?
关于我可能忽略的这种工具的安全性还有什么其他的吗?

我知道这个工具是愚蠢的,甚至不应该存在,但我不负责决策,我们计划尽快删除该工具。

4

1 回答 1

0

我有个主意。您可以定义可用的实体和属性来构造此类查询。例如,对于 Customer 实体,用户可以选择:Name、Surname、Orders.Items.Name、Orders.OrderDate(导航属性)。

用户将参数作为字符串发送到服务器,服务器将参数转换为 lambda 表达式(使用 lambda 表达式运行时构造函数),然后将其附加到查询中,例如 Customers.Select(selectExp).ToList()

这对你有帮助吗?

于 2015-05-29T13:23:03.487 回答