SQL注入與防範基礎

2021-04-13 01:54:22 字數 2007 閱讀 8139

<****************************** sql注入與防範基礎 *************************====>

author:劉嵐

date:  2007-5-31

小例:正常情況下 :select * from users where login =『正確帳戶』 and password =『正確密碼』

輸入 』 or 『』=『 會怎樣 ?

sql語句變為:

select * from users where login =『』 or 『』=『』 and password =『』 or 『』=『』

看看where之後條件是不是就變為真了???

1.什麼是sql注入式攻擊?

sql server注入式攻擊就是攻擊者用非法的sql語句欺騙伺服器,執行惡意的操作.

2.檢測乙個**是否可以進行注入攻擊?

1).step1(是否可以進行攻擊)

http://.../url.aspx?id=1  and 1=1 正常顯示

http://.../url.aspx?id=1  and 1=2 內容為空

2).step2(檢視伺服器用的是哪種資料庫)

執行成功,則證明伺服器端所用為sql server資料庫

執行成功,則證明伺服器端所用為access資料庫

3.怎樣進行攻擊呢???

1).利用系統表注入sqlserver資料庫

說明:以上語句新建了使用者名為name、密碼為password的windows的帳號

說明:將新建的帳號name加入管理員組(此命令只限於sa賬戶,否則沒有許可權呼叫xp_cmdshell命令)

2).檢視伺服器所用的庫與表

說明:db_name()>0 是乙個系統變數,返回是資料庫名

4.注入式攻擊的原因

攻擊方式:

select * from users where login =『』 or 『』=『』 and password =『』 or 『』=『』

原因:動態生成sql命令沒有對使用者輸入的資料進行驗證

攻擊方式:

exec master..xp_cmdshell 「net user name password /add

原因: 1).通過sql的漏洞

2).資料庫訪問許可權的設計為dbo的許可權

5.懂得攻擊就可以防範了...

1).過濾輸入內容(替換所有非法字元)

例: 方式1--替換單引號   replace(「』」, 「』』」)

2).檢查使用者輸入的合法性

確信輸入的內容只包含合法的資料。資料檢查應當在客戶端和伺服器端都執行——之所以要執行伺服器端驗證,

是為了彌補客戶端驗證機制脆弱的安全性。 要知道,客戶端提交的東西是不可信的.

3).限制表單或查詢字串輸入的長度,也是良好程式設計習慣的體現.

4).用儲存過程來完成各項查詢.即使用者只有對proc執行的許可權,沒有對table操作.

5).將使用者登入名稱、密碼等資料加密儲存.例如:md5,

6).檢查提取資料的查詢所返回的記錄數量.

如果程式只要求返回乙個記錄,但實際返回的記錄卻超過一行,那就當作出錯處理.

7).使用者最小許可權原則

一般情況下,不授予賬戶sa的許可權.

SQL注入漏洞與防範

sql注入的原理 在原有sql語句上附加一段sql 構造特殊的sql語句,利用程式自身的許可權實現所需要的操作。假如現在有一張user表 uidusernamepwd 1adminadmin222 2custome123456 現在執行乙個登入操作 conn mysqli connect local...

SQL 注入與防範方法

前言 所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。首先要有乙個思想觀念 1.以下例項中,輸入的使用者名稱必須為字母 數字及下劃線的組合,且使用者名稱長度為 8 到 20 個字元之間 if preg match w...

防範sql注入

真沒語言了,公司的 都有這個漏洞,明天趕緊把改了 sql注入式攻擊是利用是指利用設計上的漏洞,在目標伺服器上執行sql命令以及進行其他方式的攻擊 動態生成sql命令時沒有對使用者輸入的資料進行驗證是sql注入攻擊得逞的主要原因。比如 如果你的查詢語句是select from admin where ...