python與sql注入


一、什么是sql注入:
    SQL注入攻擊指的是通過構建特殊的輸入作為參數傳入Web應用程序,而這些輸入大都是SQL語法里的一些組合,通過執行SQL語句進而執行攻擊者所要的操作,其主要原因是程序沒有細致地過濾用戶輸入的數據,致使非法數據侵入系統。
    根據相關技術原理,SQL注入可以分為平台層注入和代碼層注入。前者由不安全的數據庫配置或數據庫平台的漏洞所致;后者主要是由於程序員對輸入未進行細致地過濾,從而執行了非法的數據查詢。基於此,SQL注入的產生原因通常表現在以下幾方面:①不當的類型處理;②不安全的數據庫配置;③不合理的查詢集處理;④不當的錯誤處理;⑤轉義字符處理不合適;⑥多個提交處理不當。

二、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注入的產生。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM