这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
重点内容: 🍦CSRF🍦 🍧Injection🍧 🍨HTTPS🍨
🍩前言🍩
在网络时代下,Web 安全随处可见并且危害极大,稍有不慎就会造成巨大的经济损失,Web 安全问题也越来越受到重视;这节课主要讲解了目前存在的技术攻击手段和防御措施。
🍪攻击篇🍪
XSS(Cross Site Scripting)跨站脚本攻击
- 通常难以从 UI上感知 (暗地执行脚本);一般来说,XSS会夹在正常的代码中,不容易被发现。
- 窃取用户信息 (cookie/token);比如经常发生QQ号被盗,就有可能是用户信息泄露。
- 绘制 UI(例如弹窗),诱骗用户点击/填写表单;比如我们平常经常在页面上遇到的中奖信息,点开之后填写信息提交就会导致信息泄露。 反射型脚本主要是在服务端进行注入;基于DOM的XSS攻击完全由浏览器进行攻击。
CSRF(Cross-Site Request Forgery)跨站请求伪造
- 在用户不知情的前提下
- 利用用户权限 (cookie)
- 构造指定HTTP请求,窃取或修改用户敏感信息
比如发来的陌生链接,就很有可能是攻击者模拟的一个跟正版相似的页面,攻击者构造一个http请求,待用户填写完隐私信息后,携带这些信息去请求真正的页面,通过验证后返回结果。
注入(SQL Injection)SQL注入
- CLI:命令行注入
- OS command:操作系统注入
- Server-Side Request Forgery(SSRF),服务端伪造请求
- 严格而言,SSRF 不是 injection,但是原理类似
注入的种类很多,最常用的一般是SQL注入。
攻击者通过注入类似SQL语句的字符串,从而实现该字符串被当作一个SQL语句执行,因为可以增删改查,所以可能导致数据库信息的泄露,以及混乱。
Dos(Denial of Service)拒绝服务
通过某种方式(构造特定请求),导致服务器资源被显著消耗来不及响应更多请求,导致请求挤压,进而雪崩效应。
正则表达式的Dos
Distributed DoS(DDoS)
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。
- 耗时的同步操作
- 数据库写入
- SQL join
- 文件备份循环执行逻辑
🎂防御篇🎂
XSS
- 永远不信任用户的提交内容
- 不要将用户提交内容直接转换成 DOM
主流的框架默认都会防御XSS。
补充:协议,域名,端口号都相等,才叫同源;CSP策略也即同源策略。
CSRF
如果发现是异常来源,则校验Origin和Referer,如果是在域名内,则放行;否则拒绝。由于同源请求中,GET和HEAD请求方式不会发送Origin字段,所以Referer应用更广泛。
token
iframe
SameSite Cookie
SameSite和CORS的区别
Injection
找到使用SQL查询的地方,使用prepared statement进行防御。
- 最小权限原则
- 拒绝使用 sudo || root命令
- 建立允许名单+过滤
- 拒绝使用rm命令
- 对 URL 类型参数进行协议、域名、ip 等限制-
- 拒绝访问内网
DoS
基于正则的DoS防御:尽量避免使用贪婪匹配模式,尽量避免自定义正则,代码检查性能检测。
基于DDoS的防御
HTTPS
完整性
传输内容为
加密信息 + 加密信息_hash ,接收方接收信息,如果接收方的hash(加密信息)与传输过来的加密信息_hash相等,说明没有被篡改,否则就是篡改了信息。
不可抵赖:数字签名
CA证书机构会签发许多证书,服务提供方会把它的元信息和一些公钥合并成一对信息,再使用CA提供的一对私钥进行签名,形成真正的证书,证书会传递给浏览器,浏览器会使用CA签发的公钥验证证书内容,如果通过,则说明签发者身份可信。
🍰总结🍰
网络安全一直是十分关注的领域,了解这些内容主要是为了安全,进行防御,了解攻击的机制才能做好防御的措施。安全无小事,一定要重视!!!