Web开发安全 | 青训营笔记

110 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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语句执行,因为可以增删改查,所以可能导致数据库信息的泄露,以及混乱。
    image.png

Dos(Denial of Service)拒绝服务

通过某种方式(构造特定请求),导致服务器资源被显著消耗来不及响应更多请求,导致请求挤压,进而雪崩效应

正则表达式的Dos

image.png

Distributed DoS(DDoS)

短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。

  • 耗时的同步操作
  • 数据库写入
  • SQL join
  • 文件备份循环执行逻辑

🎂防御篇🎂

XSS

  • 永远不信任用户的提交内容
  • 不要将用户提交内容直接转换成 DOM 主流的框架默认都会防御XSS。
    补充:协议,域名,端口号都相等,才叫同源;CSP策略也即同源策略。

CSRF

image.png 如果发现是异常来源,则校验Origin和Referer,如果是在域名内,则放行;否则拒绝。由于同源请求中,GET和HEAD请求方式不会发送Origin字段,所以Referer应用更广泛。

token

image.png

iframe

image.png

SameSite Cookie

image.png

SameSite和CORS的区别

image.png

Injection

找到使用SQL查询的地方,使用prepared statement进行防御。

  • 最小权限原则
    • 拒绝使用 sudo || root命令
  • 建立允许名单+过滤
    • 拒绝使用rm命令
  • 对 URL 类型参数进行协议、域名、ip 等限制-
    • 拒绝访问内网

DoS

基于正则的DoS防御:尽量避免使用贪婪匹配模式,尽量避免自定义正则,代码检查性能检测。
基于DDoS的防御
image.png

HTTPS

完整性

image.png 传输内容为加密信息 + 加密信息_hash ,接收方接收信息,如果接收方的hash(加密信息)与传输过来的加密信息_hash相等,说明没有被篡改,否则就是篡改了信息。

不可抵赖:数字签名

image.png CA证书机构会签发许多证书,服务提供方会把它的元信息和一些公钥合并成一对信息,再使用CA提供的一对私钥进行签名,形成真正的证书,证书会传递给浏览器,浏览器会使用CA签发的公钥验证证书内容,如果通过,则说明签发者身份可信。

🍰总结🍰

网络安全一直是十分关注的领域,了解这些内容主要是为了安全,进行防御,了解攻击的机制才能做好防御的措施。安全无小事,一定要重视!!!