簡體   English   中英

EntityFramework 6下用戶定義的直接SQL查詢的安全性

[英]Security of user-defined direct SQL queries under EntityFramework 6

我需要為正在工作的應用程序的用戶開發(重新)工具,該工具位於ASP.NET 4.5.2 / MVC 5.2.3中,並使用Entity Framework 6。

該工具應該允許授權用戶編輯SQL查詢,以及特權較低的用戶也可以運行它們。 我擔心這種工具的安全性,即使Web應用程序只能作為Intranet訪問。

任何給定的查詢僅允許為SELECT並且可以在多個表上具有JOIN

是否有任何EF6特定功能允許我檢查甚至限制一個sql字符串僅執行一次SELECT
我是否應該在數據庫中有一個僅允許執行SELECT的特定用戶,並以該用戶的身份對那些查詢使用單獨的連接?
我可能忽略了這種工具的安全性嗎?

我知道這個工具是愚蠢的,甚至不應該存在,但是我不負責決策,我們正計划盡快刪除該工具。

我有個主意。 您可以定義可用的實體和屬性來構造這種查詢。 例如,對於Customer實體,用戶可以選擇:名稱,姓氏,Orders.Items.Name,Orders.OrderDate(導航屬性)。

用戶將參數作為字符串發送到服務器,服務器將其轉換為lambda表達式(使用lambda表達式運行時構造函數),然后將其附加到查詢中,例如Customer.Select(selectExp).ToList()

這對您有幫助嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM