这是我参与「 第五届青训营 」伴学笔记创作活动的第 10 天
本堂课主要讲解的重点内容
- Cross-Site Scripting(XSS)
- Cross-site request forgery(CSRF)
- Injection
- Denial of Service(DoS)
- Distributed DoS(DDoS)
- 中间人攻击
对讲解的部分知识点进行介绍
一 攻击
1 跨站脚本攻击(XSS)
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
如填写表单信息时,如果盲目相信用户的提交内容,那么假如用户填写了类似 <script>alert("注入恶意代码")</script>的信息,然后直接通过element.innerHTML把用户提交的代码存起来的话,那么工具者就可以实现攻击了。
XSS特点:
- 通常难以从UI上发现,因为是在暗地里执行脚本
- 可以窃取用户信息(cookie、token)
- 还可以绘制UI(如弹窗),诱骗用户点击
1.1 Stored XSS
把恶意脚本存储在被攻击网站的数据库中。当其他人访问页面时,回去读数据,然后就会执行到数据库中的恶意脚本,从而被攻击。危害最大,对全部用户可见
1.2 Reflected XSS
- 不涉及数据库
- 从URL上进行攻击
1.3 DOM-based XSS
- 不需要服务器的参与
- 恶意攻击的发起、执行,都在浏览器完成
这与Reflected XSS十分相似,但Reflected XSS的恶意脚本是注入到服务器中,而DOM- based XSS的恶意脚本是注入到浏览器中,而且攻击不需要服务器的参与
1.4 Mutation-based XSS
- 利用浏览器渲染DOM的特性(独特优化)
- 按浏览器进行攻击
2 跨站伪造请求CSRF
CSRF攻击:在用户不知情的前提下,利用用户权限(cookie),构造HTTP请求,窃取或修改用户敏感信息
经典例子:银行转账
首先,a为了转账给b10000元,于是a登录银行页面进行转账操作, 还没有推出登录,又收到中奖通知链接(假的或者是只有小额鱼饵),a点击链接,并点击领奖按钮。然后发现钱被转走了100000元了。
CSRF攻击原理:利用cookie的自动携带特性,在其他网站向你的网站发送请求时,如果网站中的用户没有退出登录,而发送的请求又是一些敏感的操作请求(如转账),则会给用户带来巨大的损失。
3 注入攻击injection
3.1 SQL注入
4 Dos
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而引起雪崩效应。
4.1 ReDoS
例子:上网找到了讲的非常好的文章
4.2 Distributed DOS(DDoS)
短时间内,来自大量僵尸设备的请求,服务器不能及时响应全部请求,导致请求堆积,进而引发雪崩效应,无法响应新请求。
攻击特点:
- 直接访问IP
- 任意API
- 消耗大量带宽(耗尽)
DDoS攻击 demo:SYN Flood
原理:TCP的三次握手
如果客户端给服务器发送的ACK丢失的话,服务器不知道丢失,会等客户端的ACK,超时后重新发送SYN-ACK消息给客户端,直到重试超过一定次数才会放弃。
而SYN Flood就是通过发送大量的SYN,但是不给服务器发送ACK,从而耗尽服务器的资源。
5 中间人攻击
个人总结
不错,学习到了很多之前没有接触过的知识,感觉很有趣很有意思,时间紧迫,笔记稀疏,接下来会继续完善
文章大量参考:Web开发安全