zoukankan      html  css  js  c++  java
  • sql注入的一点学习(待更新)

    什么是sql注入???

    通过把SQL命令插入到Web表单递交输入域名页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

    假如数据库中有一张商品表goods,存放多条商品信息

    当执行sql语句

    select * from goods where id = 1;

    查询结果当然为一条数据

    当执行sql语句

    select * from goods where id = 1 or  6;

    这时候的执行结果会是什么呢???

    结果是所有的商品信息数据都会被查询出来。

    这只是查询操作,如果是被人恶意执行删除操作,那就凉凉了

    当我们python代码中执行连接数据库,获取cursor对象来执行sql语句的时候,不要以拼接字符串的形式拼接sql语句,例如根据用户输入的id来拼接sql语句

    sql  =  """select  *  from  goods  where id = %s;"""%id

    如何安全的执行sql语句呢???

    sql = """select  *  from  goods  where id = %s;"""

    在游标对象执行sql语句的时候传参

    游标对象.execute(sql语句,(参数...))  

    如何防止sql注入???

    1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等。

    2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

    3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

    4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。

    5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

  • 相关阅读:
    文件操作fopen
    随机数应用
    随机数
    通过命令行参数打开文件
    命令行参数
    内存分区
    const修饰指针+volatile +restrict
    类型限定词——const
    (app笔记)Appium如何开启、配置、启用
    (app笔记)Memory Fill内存填充
  • 原文地址:https://www.cnblogs.com/ajiuna/p/9349673.html
Copyright © 2011-2022 走看看