python中如何防止sql注入
阿新 • • 發佈:2018-12-16
SQL注入簡介
SQL注入是比較常見的網路攻擊方式之一,它不是利用作業系統的BUG來實現攻擊,而是針對程式設計師程式設計時的疏忽,通過SQL語句,實現無帳號登入,甚至篡改資料庫。sql注入中最常見的就是字串拼接,研發人員對字串拼接應該引起重視。
SQL注入攻擊的總體思路
1.尋找到SQL注入的位置
2.判斷伺服器型別和後臺資料庫型別
3.針對不通的伺服器和資料庫特點進行SQL注入攻擊
錯誤用法:
1 sql = “select id,type,name from xl_bugs where id = %s and type = %s” % (id, type) 2 cur.execute(sql) 這種用法就是常見的拼接字串導致sql注入漏洞的產生。看到這個突然想到上個禮拜drupal水滴的那個漏洞,其並不是預編譯語句被繞過了。而是在構造帶入的預編譯語句的時候拼接了使用者輸入字串,還未帶入查詢的預編譯語句已經被注入了,之後帶入正確的引數,最後被注入了
正確用法:
cursor.execute('select name,password fromt b1 where name=%s and password=%s',('min',1234))
result= cursor.fetchone()
print(result)
execute()函式本身就有接受SQL語句變數的引數位,只要正確的使用(直白一點就是:使用”逗號”,而不是”百分號”)就可以對傳入的值進行correctly轉義,從而避免SQL注入的發生。