sql注入
SQL注入的产生过程
- 转义字符处理不当
- 类型处理不当
- 查询集处理不当
- 错误处理不当
- 多个提交处理不当(使用“白名单”而非“黑名单”)
- 不安全的数据库配置
不要信任用户输入的任何数据
*元数据:数据库内部包含的数据,例如MYSQL中的INFORMATION_SCHEMA
*
无法隐藏或取消对MYSQL数据库中
INFORMATION_SCHEMA
虚拟数据库的访问
- 基本的数据库驱动的web应用通常包含三层:表示层(浏览器),逻辑层(编程语言),存储层(数据库)
寻找SQL注入
唯一规则:发送意外数据以触发异常
- 识别WEB应用中所有的数据输入
- 了解哪些类型请求会触发异常
- 检测服务器响应中的异常
识别数据输入
-
GET请求
特点:信息显示在URL中,对用户透明,长度有限制 -
POST请求
特点:长度几乎无限制,表单提交一般通过POST提交,不显示在URL中
一般,有两个原因可以导致SQL注入:
- 缺少用户输入验证
- 数据和控制结构混合在同一通道中
数据库错误
常见几种对数据库错误的处理方法:
1.将错误显示在页面上(极其危险)
2.隐藏在web页码的源代码中以便于调试(开发环境中适用)
3.跳转至另一个页面
4.返回HTTP错误代码500(内部服务器错误)或HTTP重定向代码(502)
5.适当处理错误但是不显示结果,可能会显示一个通用的错误页面
网友评论