1. 程式人生 > >python的sql註入

python的sql註入

原理 註入攻擊 根據 val space 數位 sel where tab

一、什麽是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註入的產生。

python的sql註入