什麼是sql注入漏洞??

Tags: 密碼, 漏洞,

介紹一下什麼是sql注入漏洞?

工具/原料

Visuai Studio

Sql server 2008 r2

方法/步驟

解釋起來有點困難,我們直接用實際案例演示吧.

首先,我們用Sql server 建立一個geek的資料庫.

再建立一個"表_登入"

以及欄位和資料.

什麼是sql注入漏洞?

什麼是sql注入漏洞?

建立一個C#語言Windows窗體程式.

什麼是sql注入漏洞?

建立一個和我圖片差不多的介面.

其中最大的文字框裡面放的我們當前執行的sql語句.

以便大家更明白什麼是SQL注入.

什麼是sql注入漏洞?

//以下程式碼是點選按鈕登入之後執行的程式碼

string 連線字串 = @"server=.;database=geek;Integrated Security=true";

string sql = "select count(*) from 表_登入 where 使用者名稱='" + textBox_使用者名稱.Text + "' And 密碼='" + textBox_密碼.Text + "';";

int count;

using (SqlConnection 連線物件 = new SqlConnection(連線字串))

{

using (SqlCommand 執行物件 = new SqlCommand(sql, 連線物件))

{

連線物件.Open();

count = (int)執行物件.ExecuteScalar();

}

}

textBox_sql.Text = sql;

if (count > 0)

{

MessageBox.Show("登入成功");

}

else

{

MessageBox.Show("使用者名稱或密碼錯誤");

}

什麼是sql注入漏洞?

我們先輸入錯誤的賬號密碼,看一下程式碼執行結果是登入失敗.

什麼是sql注入漏洞?

我們再輸入一下正確的帳號和密碼是可以登入成功的.

什麼是sql注入漏洞?

select count(*) from 表_登入 where 使用者名稱='sql注入漏洞' And 密碼='1' or '1'='1';

關鍵的地方來了,我們這次再輸入一個錯誤的賬號和密碼,但是軟體卻可以顯示登入成功.大家仔細觀察sql語句,就不難發現,這是為什麼會出現這樣的結果了.

sql語句漏洞是非常危險的. 管理員賬號洩露,資料庫被惡意刪除,重要商業資料洩露等.

什麼是sql注入漏洞?

這就是由於使用者刻意輸入,使字串拼接的sql語句有了新的意義,和原來的sql語句意義完全不一樣了.

密碼應該是sql的值,但卻成為了sql語句的條件.

我們要杜絕這種情況,就是要讓客戶輸入的變成值,從而避免發生這種問題!

sql注入漏洞攻擊總結一下:在你輸入資料的時候,不違揹你的語法,給你創造出一些新的條件,讓你完成另外一些事情.

那麼我們如何規避這種情況呢?

在以前傳統的做法是檢測使用者的輸入,過濾替換掉一些敏感的字元,比如單引號,括號.

但是這也不能絕對防範.

在我們C#中,微軟為我們設計了一個SqlParameter類庫

否則使用資料庫的儲存過程都可以完美過濾掉.

下一篇經驗分享,我們來介紹SqlParameter類庫的使用.

注意事項

sql注入漏洞是非常危險的.開發資料庫軟體一定要懂得防範

相關問題答案