这是我参与「第五届青训营」伴学笔记创作活动的第 9 天
从攻击角度看
(Cross-Site Scripting,跨站脚本)XSS
XSS攻击(跨站脚本攻击)通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容
XSS主要利用了
- 开发者盲目信任用户提交的内容
- 前端开发工程师直接将用户提交的字符串转化成了DOM
XSS的特点
- 通常难以在UI上感知(暗地执行脚本)
- 窃取用户信息(如cookie、token)
- 绘制UI(例如弹窗),诱骗用户点击/填写表单
XSS攻击类型
- Stored XSS(存储型XSS攻击)
- 恶意脚本被存储在数据库中
- 在用户访问页面的时候读取数据,导致被攻击
- 这种攻击类型危害最大,对全部用户可见
- Reflected XSS(反射型XSS攻击)
从服务器这一段注入脚本- 不涉及数据库
- 从URL上攻击
- DOM-based XSS(基于DOM的XSS)
- 不需要服务器的参与
- 恶意攻击的发起和执行全在浏览器中完成
Reflected XSS与DOM-based XSS的区别
完成脚本注入的地方不同
4. Mutation-based XSS
- 利用了浏览器渲染DOM的特性(独特优化)
- 不同浏览器会有区别(按浏览器进行攻击)
Cross-site request forgery(CSRF)跨站伪造请求
- 在用户不知情的前提下
- 利用用户权限(cookie)
- 构造指定HTTP请求,窃取或修改用户敏感信息
SQL Injection
SQL注入攻击是最常见的注入攻击
大概流程
其他注入
- CLI命令行
- OS command系统命令行
不是injection,但是原理类似的Server-Side Request Forgery(SSRF), 服务器端伪造请求
Dos(Denial of Service)
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,,导致请求挤压,进而雪崩效应
从防御角度看
防御XSS攻击
原则
- 永远不信任用户提交的内容
- 不要将用户提交的内容直接转换成DOM, 应该将用户提交的内容当做字符串对待