2012-07-27 67 views
0

那麼,我正在閱讀有關SQL注入的知識,但是我沒有意識到它可能發生在Visual Basic .NET中 - 我使用的是2008-因爲我剛剛在PHP中讀到它,問題是:我怎樣才能避免這種情況?因爲一個朋友在幾分鐘前就做出了這個問題,這是我的桌面應用程序的安全問題。在Visual Basic 2008中的SQL注入

-Thanks-

+0

逃離你的字符串?這是我在Stackoverflow上見過的最迷惑的問題。添加更多細節。嘗試包括一些代碼。 – Wug 2012-07-27 14:03:33

+0

基本上你使用參數化查詢。搜索這裏你會發現它的負載。 – 2012-07-27 14:13:45

+0

謝謝多數民衆贊成我在做什麼() – DFabeiro 2012-07-27 14:25:27

回答

1

SQL注入攻擊不是語言特定的。如果您接受用戶輸入並將其直接插入到SQL查詢中而不進行消毒,那麼您的應用程序很容易受到SQL注入的影響。

有關如何避免SQL注入攻擊的更多詳細信息,請參見this answer

您應該從中取走的一般想法是永遠不要相信用戶輸入

1

這適用於所有相似的語言:

  1. 當你可以用準備好的語句來訪問數據庫。避免通過將用戶輸入連接到查詢來構建數據庫查詢。
  2. 驗證您打算在數據庫語句中刻意使用的任何數據。如果一個字段應該是一個整數,那麼在數據庫中使用它之前,請檢查它是否爲整數。
  3. 如果某種形式的ORM存在,它可能會爲你做#1和#2(至少在某種程度上#2)。 LINQ應該爲你處理這個問題。如果您選擇使用Linq,則使用SqlParameter來構建查詢。
  4. 如果可能,請使用存儲過程。
  5. 即使在存儲之後,也要小心用戶輸入。
+0

Thanx,但我的意思是沒有功能或類似的東西?像在PHP中創建你的代碼來避免這些? – DFabeiro 2012-07-27 14:15:16

+0

在PHP中,你不應該使用類似mysql_real_escape()的東西,你應該使用帶有參數化查詢的MySQLi。同樣在VB .NET中,你應該使用LINQ和SqlParameter(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx#Y213)來構建你的查詢。 – hsanders 2012-07-27 14:18:04

+0

非常感謝 – DFabeiro 2012-07-27 14:26:44