这是我参与「第四届青训营 」笔记创作活动的的第7天,是关于《Web开发的安全之旅》的学习。
Web安全
安全问题很常见,就在身边。 会危害
- 用户
- 公司
- 程序员
两个角度了解安全问题
- 假如是hacker
- 假如是开发者
1.Cross-Site Scripting(XSS)
盲目的信任用户的提交内容引起的
特点:
- 通常难以从UI上感知(暗地执行脚本)
- 窃取用户信息
- 绘制UI,诱骗用户点击/填写表单
Stored XSS
- 恶意脚本被存在数据库中
- 访问页面 读数据 ===被攻击
- 危害最大,对全部用户可见
Reflected XSS
- 不涉及数据库
- 从URL上攻击
DOM-based XSS
- 不需要服务器的参与
- 恶意攻击的发起+执行,全在浏览器完成
Mutation-based XSS
- 利用了浏览器渲染DOM的特性(独特优化)
- 不同浏览器,会有区别(按浏览器进行攻击)
CSRF Cross-site request forgery(跨站伪造请求)
- 在用户不知情的前提下
- 利用用户权限
- 构造指定HTTP请求,窃取或修改用户敏感信息
SRF demo
- 用户没有访问银行页面
- 银行页面中的特定接口被请求
- 请求执行成功
最常见的就是GET请求,写个a标签设置href属性发送请求,或者图片的src属性发送请求
SQL Injection
例1
不对请求的数据做过滤的话,那就会造成无法估量的损失。
例2
当执行这条命令时,会删除服务器上的文件,使服务器直接宕机。
如果不过滤数据,被随意修改配置,会变成别人的攻击工具。
所以安全问题是个很严格的问题。
Denial of Service(DoS)
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。
正则 贪婪模式
恶意消耗服务器的资源,使响应时间上升,接口吞吐量下降。
Distributed DoS(DDoS)
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致讨还规程,进而雪崩效应,无法响应新请求。
【不搞复杂,量大就完事】
攻击特点
- 直接访问IP
- 任意 API
- 消耗大量带宽
例1
TCP有三次握手,只建立但不完成,恶意消耗资源。
传输层攻击
中间人攻击
- 明文传输
- 信息篡改不知道
- 对方身份未验证
防御篇
XSS
永远不能信任用户的提交内容,永远不要将用户提交的内容直接转换成DOM,应该直接当成字符串。
同源策略
浏览器的同源策略
同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
- 协议一致
- 域名一致
- 端口一致
CSRF的防御(跨站伪造请求)
CSRF--token防御
CSRF anti-pattern
不能偷懒,是什么请求就对应什么接口