![](/img/trans.png)
[英]How to save SELECT sql query results in an array in C# Asp.net
[英]Restrict SQL Query to SELECT operation ASP.net C#
我們正在創建一個用戶界面,
1)在數據庫上運行Select語句(查詢可以包括Join或子查詢)
2)在同一屏幕上查看結果
現在,我們正在檢查輸入字符串是否具有以下任何關鍵字INSERT / UPDATE / DELETE / TRUNCATE / CREATE / ALTER / DROP / GRANT / REVOKE語句,並在僅對數據庫具有SELECT權限的SQL用戶下執行查詢。
在以只讀用戶身份執行查詢之前,是否還有其他方法可以添加額外的保護層來驗證查詢?
謝謝
我假設並非所有應用程序用戶都是有效的數據庫用戶。
您需要創建2個數據庫登錄名。 一個應該只具有db_datareader
權限,該權限應用於運行查詢。 在您的代碼中處理SqlException
以查看最終用戶是否試圖執行除select之外的另一條語句。
應該有另一個數據庫登錄名,應用程序代碼應使用該數據庫登錄名執行任何其他DML操作。
除了讓人們寫任何他們想作為命令的內容,而不是僅僅檢查命令中您認為有害的某些單詞外,為什么不從t表創建僅具有一個操作(選擇)的“查詢生成器”(其中t是可用表的數量),並帶有所需的列。 您可以添加一些下拉菜單,其中包含可用操作(根據情況選擇),可用表和可用列。 這樣,您可以使用給定的輸入自行生成查詢,而無需讓用戶直接將命令寫入服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.