1、什麼是sql注入: SQL注入攻擊指的是經過構建特殊的輸入做爲參數傳入Web應用程序,而這些輸入大都是SQL語法裏的一些組合,經過執行SQL語句進而執行攻擊者所要的操做,其主要緣由是程序沒有細緻地過濾用戶輸入的數據,導致非法數據侵入系統。 根據相關技術原理,SQL注入能夠分爲平臺層注入和代碼層注入。前者由不安全的數據庫配置或數據庫平臺的漏洞所致;後者主要是因爲程序員對輸入未進行細緻地過濾,從而執行了非法的數據查詢。基於此,SQL注入的產生緣由一般表如今如下幾方面:①不當的類型處理;②不安全的數據庫配置;③不合理的查詢集處理;④不當的錯誤處理;⑤轉義字符處理不合適;⑥多個提交處理不當。 2、python中解決sql注入 python中存在sql注入風險的sql語句 錯誤用法: sql = "select id,name from user_table where id = %s and name = %s" % (id, name) cur.execute(sql) 正確用法: 1. execute() 函數自己有接受sql語句參數位的,能夠經過python自身的函數處理sql注入問題。 args = (id, type) cur.execute('select id,name from user_table where id = %s and name = %s', args ) 2. rs=c.execute("select * from log where f_UserName=:usr",{"usr":"jetz"}) 3. rs=c.execute("select * from log where f_UserName=:1 ",["jetz"]) 使用如此參數帶入方式,python會自動過濾args中的特殊字符,制止SQL注入的產生。