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

转载于:https://www.cnblogs.com/yiruhua/p/5841007.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值