2011-03-31 44 views
4

我正在c#中製作一個Windows軟件。我已閱讀sql-injection,但我沒有發現它正在處理我的應用程序。SQL注入在winforms中工作嗎?

SQL注入在winforms中工作嗎?
如果是如何防止它們。

編輯: 我正在使用文本框讀取用戶名和密碼。並通過使用textboxex,我發現文本框中的文本位於雙引號("")之間。所以我沒有發現它的工作。

當我在文本框使用引號" OR ',文本讀作\" OR \'

例子:

  ................... 
USER NAME: | a" OR "1"=="1 | 
      ``````````````````` 
// it is read as textBox1.Text = "a\" OR \"1\"==\"1"; 
+0

這不是關於雙引號,而是關於如何將參數傳遞給SQL查詢。 – 2011-03-31 05:55:28

+1

有動畫片顯示它「...你真的給你的兒子羅伯特命名了嗎?); DROP TABLE學生; - ?」 - http://bobby-tables.com/ – 2011-03-31 06:03:53

+0

@Alexei:我看過這個漫畫,我可以用webforms工作,但是在windows窗體中,'''讀作'\''。所以它不會在winforms中工作。 – 2011-03-31 06:06:26

回答

3

是。最簡單的方法是使用SqlParameters發送給數據庫的任何用戶輸入。或者不要使用SqlDataAdapter,而是使用實體框架。

2

SQL注入是由用戶直接在動態構建的SQL語句(稱爲動態SQL)內輸入引起的,這使用戶可以打破SQL或「注入」自己的SQL代碼。

使用存儲過程或帶參數的SQL可以解決這個問題。

所以是的,如果SQL以這種方式編碼,這可以發生在WinForms內。