1) 注入分为哪几种类型?分类依据是什么?是否唯一? 2)普通注入和盲注的区别是什么?利用方法有什么不同? 3)尝试自己做出以SQL注入为中心的头脑风暴图。
时间: 2024-10-18 12:19:52 浏览: 37
SQL注入是一种针对数据库安全的攻击方式.docx
1) 注入主要有以下几种类型:
- **依赖注入**(Dependency Injection, DI):这是最常见的类型,它涉及到将依赖的对象作为参数传递给其他对象,而不是让被依赖对象自行创建。分类依据是按照创建依赖对象的方式,如构造函数注入、属性注入等。这不是唯一的划分标准,有些框架可能有更细致的分类。
- **构造函数注入**:直接通过构造函数传入依赖。
- **setter方法注入**:通过公共 setter 方法设置依赖。
- **接口注入**:依赖于实现了特定接口的对象。
2) **普通注入**(也称为明文注入)与 **盲注** 的区别在于攻击者对系统的影响程度以及发现其存在的难易度:
- 普通注入:攻击者可以直接提供恶意的输入值,系统的响应或错误信息通常会泄露注入的位置,容易被检测到。
- 盲注(又称隐性注入):攻击者试图通过试探获取反馈,比如SQL错误码,然后根据反馈调整注入策略,隐蔽性更强,更难以立即察觉。
利用方法的不同在于:
- 普通注入:直接在用户输入字段处添加SQL代码,更容易验证。
- 盲注:需要多次尝试并分析服务器返回的信息模式,过程更为复杂和时间消耗大。
3) **SQL注入头脑风暴图**:
```
+-------------------+
| 用户输入 |
+--+--------+
| 表单验证 | SQL |
+---------+--------+
| ^
+-->+-------+
| |
+---->| 验证库 |
| |
+-->+-------+
| |
+--+
|
--+--> SQL查询结果
```
在这个图中,用户输入经过表单验证后,可能被恶意SQL代码修改。验证库检查输入是否合法,但实际上可能会暴露部分敏感信息或允许注入。最终,这可能导致数据库受到攻击或数据泄漏。
阅读全文