Python中如何防止sql註入
阿新 • • 發佈:2017-10-28
mage cut 人員 錯誤 where mysqld 針對 應該 就是
sql註入中最常見的就是字符串拼接,研發人員對字符串拼接應該引起重視,不應忽略。
錯誤用法1:
sql = "select id, name from test where id=%d and name=‘%s‘" %(id, name)
cursor.execute(sql)
錯誤用法2:
sql = "select id, name from test where id="+ str(id) +" and name=‘"+ name +"‘"
cursor.execute(sql)
正確用法1:
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,可以對字符串轉義。
更多內容,請掃碼關註微信公眾號“程序媛蒲葦”
Python中如何防止sql註入