这是我参与「第五届青训营」伴学笔记创作活动的第12天
一、Cross-Site Scripting(XSS)
-
即跨站脚本攻击,是一种安全漏洞,攻击者可以利用这种漏洞在网站上注入恶意的客户端代码。若受害者运行这些恶意代码,攻击者就可以突破网站的访问限制并冒充受害者。
-
XSS的一些特点:
- 通常难以从UI上感知(暗地执行脚本)
- 窃取用户信息(cookie/token)
- 绘制UI(例如弹窗),诱骗用户点击/填写表单
-
XSS的类型:
- 存储型XSS:注入型脚本永久存储在目标服务器上。当浏览器请求数据时,脚本从服务器上传回并执行。
- 恶意脚本被存在数据库中
- 访问页面->读数据->被攻击
- 危害最大,对全部用户可见
- 反射型XSS:当用户点击一个恶意链接,或者提交一个表单,或者进入一个恶意网站时,注入脚本进入被攻击者的网站。Web 服务器将注入脚本,比如一个错误信息,搜索结果等 返回到用户的浏览器上。由于浏览器认为这个响应来自"可信任"的服务器,所以会执行这段脚本。
- 不涉及数据库
- 从URL上攻击
- 基于DOM的XSS:通过修改原始的客户端代码,受害者浏览器的 DOM 环境改变,导致有效载荷的执行。也就是说,页面本身并没有变化,但由于 DOM 环境被恶意修改,有客户端代码被包含进了页面,并且意外执行。
- 不需要服务器参与
- 恶意攻击的发起 + 执行,全在浏览器完成
- 基于Mutation的XSS
- 利用了浏览器渲染DOM的特性(独特优化)
- 不同浏览器,会有区别(按浏览器进行攻击)
- 存储型XSS:注入型脚本永久存储在目标服务器上。当浏览器请求数据时,脚本从服务器上传回并执行。
二、Cross-site request forgery(CSRF)
-
即跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
-
CSRF的特点:
- 在用户不知情的前提下
- 利用用户权限(cookie)
- 构造指定HTTP请求,窃取或修改用户敏感信息
-
CSRF的类型:
- Get类型(最常见)
- Post类型
- 链接类型
三、Injection
常见类型:
- SQL Injection
- CLI
- OS command
- Server-Side Request Forgery(SSRF),服务端伪造请求
- 严格而言,SSRF不是injection,但是原理类似
四、Denial of Service(DoS)
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。
常见类型:
- ReDoS:基于正则表达式的DoS
- Logical DoS
- 耗时的同步操作
- 数据库写入
- SQL join
- 文件备份
- 循环执行逻辑
- Distributed DoS(DDoS)
- 短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。(不搞复杂的,量大就完事儿了)
- 攻击特点:
- 直接访问IP
- 任意API
- 消耗大量带宽(耗尽)
五、中间人攻击
中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。
常见类型:DNS欺骗、ARP欺骗
- 明文传输
- 信息篡改不可知
- 对方身份未验证
六、课后总结
本章节学习了从攻击者角度出发的Web开发安全知识,攻击者(黑客)对用户的攻击方式多种多样,非常复杂,通过本章的学习,了解到了黑客们的可怕,作为一名程序员,一定要多加小心,保护好自己的“孩子们”(害怕)。