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