Asp.net中進行安全的 ADO.NET 編碼(一)

來源:互聯網
上載者:User
ado|asp.net|安全|編碼 Asp.net中進行安全的 ADO.NET 編碼(一)
保證應用程式的安全性組件括編寫安全的代碼。代碼必須只公開用戶端代碼所需要的資訊和功能。與 ADO.NET 相關的常見攻擊是 SQL Insertion 攻擊,它從應用程式返回的異常中來確定私人資料庫資訊。

危險性:
在 SQL Insertion 攻擊中,攻擊者在您的命令中插入在資料來源位置執行處理的其他 SQL 陳述式。這些命令不僅可以修改或破壞資料來源位置的資訊,還可以檢索您的私人資訊。將命令字串與外部輸入串聯在一起的代碼容易受到 SQL Insertion 攻擊。例如,以下代碼容易受到 SQL Insertion 攻擊。

[Visual Basic]

Dim custID As String = GetCustomerID()

Dim selectString As String = "SELECT * FROM Customers WHERE CustomerID = " & custID

Dim cmd As SqlCommand = New SqlCommand(selectString, conn)
conn.Open()
Dim myReader As SqlDataReader = cmd.ExecuteReader()
myReader.Close()
conn.Close()
攻擊者可為要查詢的 CustomerID 輸入一個值“1;DROP TABLE Customers”。這會導致為此查詢執行以下命令。

SELECT * FROM Customers WHERE CustomerID = 1;DROP TABLE Customers
為了防止 SQL Insertion 攻擊,請驗證來自外部源的輸入,並傳遞列值作為參數,而不是串聯這些值來建立 SQL 陳述式。

解決方案一:
 使用Regex
可以使用Regex驗證輸入與特定的格式是否匹配。.NET Framework 提供了 Regex 對象,以根據Regex來驗證值。例如,以下代碼用於確保值為 5 個字元的字母字串。

[Visual Basic]

Public Static Function Validate(inString As String) As Boolean

Dim r As Regex = New Regex("^[A-Za-z0-9]{5}$")

Return r.IsMatch(inString)

End Function

解決方案二:
使用參數
參數提供了一種有效方法來組織隨 SQL 陳述式傳遞的值,以及向預存程序傳遞的值。另外,通過確保從外部源接收的值僅作為值傳遞,而不是作為 SQL 陳述式的一部分傳遞,可以防止參數受到 SQL Insertion 攻擊。因此,在資料來源處不會執行插入到值中的 SQL 命令。相反,所傳遞的這些值僅僅被視為參數值。以下代碼顯示了使用參數傳遞值的一個樣本。

[Visual Basic]

Dim custID As String = GetCustomerID()

Dim selectString As String = "SELECT * FROM Customers WHERE CustomerID = @CustomerID"

Dim cmd As SqlCommand = New SqlCommand(selectString, conn)

cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar, 5).Value = custID

conn.Open()

Dim myReader As SqlDataReader = cmd.ExecuteReader()

myReader.Close()

conn.Close()



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.