zoukankan      html  css  js  c++  java
  • sql注入攻击与防御第二版读书笔记一

    SQL注入是一种将SQL代码茶u日或添加到用户输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行。

    sql注入不止会影响web应用,还能影响例如“胖客户端”程序。不止能影响服务器端数据库,也能访问客户端数据库以窃取数据。

    数据库驱动的Web应用通常包含三层:表示层(浏览器),逻辑层(PHP 等编程语言),存储层(MySQL等数据库)。

    表示层向逻辑层发送请求,逻辑层通过查询,更新存储层响应请求。

    SQL注入产生过程

    1. 转义字符处理不当 

      SQL数据库将单引号解析成代码与数据的分界线 单引号不是唯一的转义字符,mysql中转义字符 

       
      一个ASCII   0   (NUL)字符。  
       
      一个新行符。  
       
      一个定位符。  
       
      一个回车符。  
        
      一个退格符。  
      '  
      一个单引号(“ '”)符。  
      "  
      一个双引号(“ "”)符。  
      \  
      一个反斜线(“”)符。  
      \%  
      一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。  
      \_  
      一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。  
      注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。 

    2. 类型处理不当

      load_file 

      select sth into outfile

      例如


      select * from table where userid=1 union all select load_file('/etc/passwd')-- -

    3. 查询语句组装不当

      select $_GET['column1'] from tabel;  column1为url参数,可被控制。

    4. 错误处理不当
    5. 多个提交处理不当 URL乱序避开预期的数据流程 可能只有第一个URL做了输入验证                

    不安全的数据库配置

    sql server sa账户

    mysql root账户和anonymous账户

  • 相关阅读:
    67.ORM查询条件:range的使用,使用make_aware将navie time 转换为aware time
    65.ORM查询条件:gte,gt,lte和lt的使用
    66.Python中startswith和endswith的使用
    63.Python中contains和icontains
    64.Python中ORM查询条件:in和关联模型
    77.Q表达式详解
    76.Python中F表达式详解
    75.Python中ORM聚合函数详解:Sum
    74.Python中ORM聚合函数详解:Max,Min
    Cadence SPB 入门
  • 原文地址:https://www.cnblogs.com/yiruhua/p/5841007.html
Copyright © 2011-2022 走看看