面試 sql注入

2022-06-26 07:39:15 字數 1080 閱讀 7319

sql注入簡介

sql注入是比較常見的網路攻擊方式之一,它不是利用作業系統的bug來實現攻擊,而是針對程式設計師程式設計時的疏忽,通過sql語句,實現無帳號登入,甚至篡改資料庫。sql注入中最常見的就是字串拼接,研發人員對字串拼接應該引起重視。

sql注入攻擊的總體思路

1.尋找到sql注入的位置

2.判斷伺服器型別和後台資料庫型別

3.針對不通的伺服器和資料庫特點進行sql注入攻擊

三、攻擊原理

通過這樣的方式就繞過了密碼檢查

所以設計sql語句時不建議這樣設計,或者對特殊字元 #、or、and 等做特殊處理

解決方式

args = (id, name)

sql = "select id, name from test where id=%s and name=%s"

cursor.execute(sql, args)

execute()函式本身有接受sql語句引數位的,可以通過python自身的函式處理sql注入問題。

正確用法2:

name = mysqldb.escape_string(name)

sql = "select id, name from test where id=%d and name='%s'" %(id, name)

cursor.execute(sql)

python模組mysqldb自帶針對mysql的字元轉義函式escape_string,可以對字串轉義。

1.永遠不要信任使用者的輸入。對使用者的輸入進行校驗,可以通過正規表示式,或限制長度;對單引號和

雙"-"進行轉換等。

2.永遠不要使用動態拼裝sql,可以使用引數化的sql或者直接使用儲存過程進行資料查詢訪問。

3.永遠不要使用管理員許可權的資料庫連線,為每個應用使用單獨的許可權有限的資料庫連線。

4.不要把機密資訊直接存放,加密或者hash掉密碼和敏感的資訊。

5.應用的異常資訊應該給出盡可能少的提示,最好使用自定義的錯誤資訊對原始錯誤資訊進行包裝

6.sql注入的檢測方法一般採取輔助軟體或**平台來檢測,軟體一般採用sql注入檢測工具jsky,**平台就有億思**安全平台檢測工具。

SQL注入(三) sql注入 bugku

原理 mysql 在使用 gbk 編碼的時候,會認為兩個字元為乙個漢字,例如 aa 5c 就是乙個 漢字 前乙個 ascii碼大於 128 才能到漢字的範圍 我們在過濾 的時候,往往利用的思 路是將 轉換為 換的函式或者思路會在每一關遇到的時候介紹 因此我們在此想辦法將 前面新增的 除掉,一般有兩種...

SQL注入 報錯注入

乙個帶get引數的 並且不從資料庫返回資料,但存在報錯資訊 檢視字段情況 報錯注入語句格式 and 1 2 union select1,2,3 from select count concat floor rand 0 2 sql語句 a from information schema.tables...

SQL注入 報錯注入

sql注入基礎 盲注 用於注入結果無回顯但錯誤資訊有輸出的情況 floor函式 返回小於等於某值的整數,例如floor 1 則返回1,floor 1.9 也返回1 rand函式 生成隨機數.可指定seed,指定後每次生成的數都一樣即偽隨機,不指定seed則每次生成的隨機數都不一樣.通過floor和r...