所謂sql注入式攻擊,就是攻擊者把sql命令插入到web表單的輸入域或頁面請求的查詢字串,欺騙伺服器執行惡意的sql命令。在某些表單中,使用者輸入的內容直接用來構造(或者影響)動態sql命令,或作為儲存過程的輸入引數,這類表單特別容易受到sql注入式攻擊。
常見的sql注入式攻擊過程類如:
⑴ 某個asp。net web應用有一個登入頁面,這個登入頁面控制著使用者是否有權訪問應用,它要求使用者輸入一個名稱和密碼。
⑵ 登入頁面中輸入的內容將直接用來構造動態的sql命令,或者直接用作儲存過程的引數。
下面是asp。net應用構造查詢的一個例子:
system。text。stringbuilder
query = new system。text。stringbuilder( "select * from users where login = ’") 。
append(txtlogin。text) 。append("’ and password=’") 。append(txtpassword。text)。append("’"); ⑶ 攻擊者在使用者名稱字和密碼輸入框中輸入"’或’1’=’1"之類的內容。
⑷ 使用者輸入的內容提交給伺服器之後,伺服器執行上面的asp。net程式碼構造出查詢使用者的sql命令,但由於攻擊者輸入的內容非常特殊,所以最後得到的sql命令變成:
select * from users where
login = ’’ or ’1’=’1’ and password = ’’ or ’1’=’1’ ⑸ 伺服器執行查詢或儲存過程,將使用者輸入的身份資訊和伺服器中儲存的身份資訊進行對比。
⑹ 由於sql命令實際上已被注入式攻擊修改,已經不能真正驗證使用者身份,所以系統會錯誤地授權給攻擊者。
如果攻擊者知道應用會將表單中輸入的內容直接用於驗證身份的查詢,他就會嘗試輸入某些特殊的sql字串篡改查詢改變其原來的功能,欺騙系統授予訪問許可權。
所謂sql注入式攻擊,就是攻擊者把sql命令插入到web表單的輸入域或頁面請求的查詢字串,欺騙伺服器執行惡意的sql命令。在某些表單中,使用者輸入的內容直接用來構造(或者影響)動態sql命令,或作為儲存過程的輸入引數,這類表單特別容易受到sql注入式攻擊。
常見的sql注入式攻擊過程類如:
⑴ 某個asp。net web應用有一個登入頁面,這個登入頁面控制著使用者是否有權訪問應用,它要求使用者輸入一個名稱和密碼。
⑵ 登入頁面中輸入的內容將直接用來構造動態的sql命令,或者直接用作儲存過程的引數。
下面是asp。net應用構造查詢的一個例子:
system。text。stringbuilder
query = new system。text。stringbuilder( "select * from users where login = ’") 。
append(txtlogin。text) 。append("’ and password=’") 。append(txtpassword。text)。append("’"); ⑶ 攻擊者在使用者名稱字和密碼輸入框中輸入"’或’1’=’1"之類的內容。
⑷ 使用者輸入的內容提交給伺服器之後,伺服器執行上面的asp。net程式碼構造出查詢使用者的sql命令,但由於攻擊者輸入的內容非常特殊,所以最後得到的sql命令變成:
select * from users where
login = ’’ or ’1’=’1’ and password = ’’ or ’1’=’1’ ⑸ 伺服器執行查詢或儲存過程,將使用者輸入的身份資訊和伺服器中儲存的身份資訊進行對比。
⑹ 由於sql命令實際上已被注入式攻擊修改,已經不能真正驗證使用者身份,所以系統會錯誤地授權給攻擊者。
如果攻擊者知道應用會將表單中輸入的內容直接用於驗證身份的查詢,他就會嘗試輸入某些特殊的sql字串篡改查詢改變其原來的功能,欺騙系統授予訪問許可權。