python與sql注入

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注入的產生。
相關文章
相關標籤/搜索