sql注入攻击与防御第二版读书笔记一

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

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

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

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

SQL注入产生过程

  1. 转义字符处理不当 

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

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

     

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

posted @ 2016-09-05 09:27  你眉目~依如画  阅读(628)  评论(0编辑  收藏  举报