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账户

  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/yiruhua/p/5841007.html
Copyright © 2011-2022 走看看