簡體   English   中英

使用MS Access鏈接表到SQL Server后端時是否可以進行SQL注入

[英]Is SQL injection possible when using MS Access linked tables to a SQL server back-end

我一直在對此進行一些研究,但到目前為止還處於空白。 這就是這種情況。

我正在開發鏈接到SQL Server后端的MS Access前端。

我在某種程度上是使用Access對SQL DB的鏈接表/表單-這樣,當用戶更新表單中的值時,Access會自動(沒有我的代碼)更新SQL DB中的值。

所以我的問題是-這是否容易受到SQL注入的攻擊? 或以某種方式訪問​​“參數化”更新,以便將所有可能的SQL注入代碼直接按原樣添加到數據庫中,而不是在服務器上進行解析並可能運行某些惡意代碼。

在此先感謝您提出任何建議!

在添加將在服務器上運行的代碼,命令或其他SQL代碼的經典意義上,對於使用鏈接表時的標准注入,答案是否定的。 這是因為盡管ACE數據庫引擎未傳遞任何客戶端上的T-SQL代碼,並且也未將多個命令(例如,用;分隔)傳遞給服務器端。 但是,在訪問應用程序中可能會發生一些“可能的”注入,並且SAME應用於鏈接表。 換句話說,在這種混合中引入SQL Server或使用內置數據庫引擎都不需要進行經典注入。

因此,這里的環境非常重要。 結果,真正的問題是訪問應用程序是否需要進行SQL注入? 如果找到適用於內置ACE引擎的工作示例的證明,那么如果您使用鏈接表到SQL Server,則將存在相同的注入。

沒有任何有效的SQL注入概念證明會運行可能的服務器端T-SQL代碼,或者我知道這是可能的。

但是,如果VBA代碼使用直通查詢,則答案肯定是肯定的,因為Access客戶端會將原始t-sql傳遞到服務器端,而不接觸此類t-sql命令和t-sql語句。 因此,提示某些參數值,然后在VBA中連接到某些原始t-sql語句,然后發送到SQL Server的表單肯定會受到SQL注入的影響。

因此,鏈接表,與這些鏈接表的綁定形式不受服務器端注入的限制。

在某些情況下,從用作Access sql中的參數的表單文本框中提取的表達式可能會修改開發人員的意圖。

例如:

strSQL =“從tblCustomers中選擇*,其中InvoiceID =” me.TextBoxPrompt

在上面,期望用戶鍵入234324(發票編號)。 但是,用戶可以鍵入已知的VBA功能。 根據您具有的沙箱模式設置,可能會輸入一個不期望的表達式。 實際上,這實際上可能導致某些VBA運行。 (用戶必須知道要運行的公共VBA功能)。

因此,在上面,它實際上不是sql注入,而是VBA注入(這里有點語義,但是區別很重要)。

因此,某些有限形式的sql注入可以發生在客戶端,但是這種表達永遠不會到達服務器。

歸根結底,這意味着通過采用SQL Server,您不會以任何方式增加SQL注入的可能性,而不是標准Access產品(我指出其中可能發生的注入類型有限)。

此規則的唯一例外是,如果Access應用程序使用傳遞查詢直接發送到SQL Server,並且用戶參數是從表單中以原始格式獲取的,然后直接傳遞到SQL Server。 因為我經常使用傳遞查詢,這些查詢是字符串和用戶提示的結果,所以這是一個問題。 而且我經常使用字符串而不是真正的ADO參數(太多的工作)。 為了防止注入,我有一個小函數可以從給定的字符串中刪除“;”以及()字符。 因此,此小例程可以防止將其他命令發送到SQL服務器(例如,以“;”分隔)。

使用綁定表格而不運行手動構造的查詢:

這是否容易受到SQL注入的攻擊?

沒有。

否則將以某種方式訪問​​“參數化”更新,從而將所有可能的SQL注入代碼直接按原樣添加到數據庫中。

是。


來自David Fenton的https://www.pcreview.co.uk/threads/sql-injection-characters-cleaning-function.4021211/#post-14022015

  1. SQL注入與使用SQL進行所有編輯的應用程序最相關。 雖然這適用於由Jet / ACE數據庫支持的網站(請參閱#1),但不適用於標准Access應用程序,該應用程序不使用SQL編輯綁定數據。 也就是說,Access應用程序中的大多數數據編輯都是通過綁定形式而不是通過SQL進行的,因此它實際上不會受到SQL注入的影響。

編輯:

您可以使用Logging ODBC,SQL Server來查看Access如何通過ODBC與SQL Server進行精確交互。

暫無
暫無

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

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