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