簡體   English   中英

將SQL查詢限制為SELECT操作ASP.net C#

[英]Restrict SQL Query to SELECT operation ASP.net C#

我們正在創建一個用戶界面,
1)在數據庫上運行Select語句(查詢可以包括Join或子​​查詢)
2)在同一屏幕上查看結果

現在,我們正在檢查輸入字符串是否具有以下任何關鍵字INSERT / UPDATE / DELETE / TRUNCATE / CREATE / ALTER / DROP / GRANT / REVOKE語句,並在僅對數據庫具有SELECT權限的SQL用戶下執行查詢。

在以只讀用戶身份執行查詢之前,是否還有其他方法可以添加額外的保護層來驗證查詢?

謝謝

  1. 確保使用參數為select語句提供輸入(避免SQL注入)。 盡管僅具有SELECT權限的用戶將始終無法執行,但這也將確保輸入是合理的。
  2. 確保任何與數據庫相關的錯誤都不會直接顯示在屏幕上

我假設並非所有應用程序用戶都是有效的數據庫用戶。

您需要創建2個數據庫登錄名。 一個應該只具有db_datareader權限,該權限應用於運行查詢。 在您的代碼中處理SqlException以查看最終用戶是否試圖執行除select之外的另一條語句。

應該有另一個數據庫登錄名,應用程序代碼應使用該數據庫登錄名執行任​​何其他DML操作。

除了讓人們寫任何他們想作為命令的內容,而不是僅僅檢查命令中您認為有害的某些單詞外,為什么不從t表創建僅具有一個操作(選擇)的“查詢生成器”(其中t是可用表的數量),並帶有所需的列。 您可以添加一些下拉菜單,其中包含可用操作(根據情況選擇),可用表和可用列。 這樣,您可以使用給定的輸入自行生成查詢,而無需讓用戶直接將命令寫入服務器。

暫無
暫無

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

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