这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
攻击篇
Cross-Site Scripting(XSS)
- Cross-Site Scripting(XSS) 跨站脚本攻击是最常见的一种攻击方式
- 攻击者会在我们开发维护页面中,通过一种方式把其恶意脚本注入进来
后果:
- 用户隐私泄漏
- 用户机器成为一台挖矿的机器
XSS主要利用
- 开发者盲目信任用户的提交内容 + 直接将字符串转换成为DOM
XSS的特点
- 通常难以从UI上感知(暗地执行脚本)
- 窃取用户信息(cookie/token)
- 绘制UI(例如弹窗),诱变用户点击/填写表单
XXS的分类
XSS按照它的性质可以分为Stored XSS、Reflected XSS、DOM-based XSS 和Mutation-based XSS 四类
Stored XSS
恶意脚本被存放在数据库中
访问页面 -> 读取数据 == 被攻击
这种危害最大, 对全部用户可见
Reflected XSS
不涉及数据库
从URL上攻击
例如下面带码,通过给URL携带恶意参数,当用户访问界面时,就会受到攻击
Mutation-based XSS
利用了浏览器渲染DOM的特性(独特优化) 不同浏览器,会有区别(按浏览器进行攻击) 最难防范的一种XSS攻击手段 例如下面例子中通过一段看似合法的tilte字符串属性,实际上将这一段代码拿到浏览器中渲染,比如Chrome中就会得到一段带有onerror的回调,回调触发则完成一次XSS攻击
Cross-site request forgery(CSRF)
Cross-site request forgery(CSRF),跨站请求伪造
用户不知情的前提下
利用用户权限(cookie)
构造指定HTTP请求,窃取或修改用户敏感信息
例如下面例子中用户收到一封未知名的邮箱,并且打开了恶意页面,然后攻击者在这个恶意页面中构造了一个HTTP请求,向银行发起了转账,银行收到这个请求,发现有用户的cookie 并且还验证成功了,就认为该请求是合法用户的合法的请求,于是就发起转账
GET是跨站最常见的HTTP请求,例如下面代码
a标签中请求
Injection(注入)
- SQL Injection是最常见的注入攻击
- 在请求中携带(恶意注入的)SQL参数,然后服务器运行这段代码时,攻击者就可以获取其他数据、修改数据等
Injection demo1
- 读取请求字段直接以字符串的形式拼接SQL语句