https://www.bilibili.com/video/BV1AQ4y1E729/?spm_id_from=333.337.search-card.all.click&vd_source=bb20c062393ff7c3113f7a3085b1acb1https://www.bilibili.com/video/BV1nBzYYeEPs/?spm_id_from=333.337.search-card.all.click&vd_source=bb20c062393ff7c3113f7a3085b1acb1

可以简单看看这两个视频吧,我觉得讲解还是很很ok的讷

这里简单总结一些两个的类型:

  1. 一个是传统的web安全:cookie 安全 | CSRF 安全 | XSS 安全

  2. 在分布式和微服务的当下,现在的安全防护变味了:前后端 + 中间件 + 服务间的复杂链路

    1. 核心含有:ORM注入,URL 跳转,CSP,DDOS,IP黑白名单

    2. 微服务特有的服务间认证、流量治理、敏感数据防护

ORM 注入攻击

核心风险:比传统 SQL 注入更隐蔽,微服务中多服务独立连库,若某服务 ORM 使用不当(如拼接 SQL、未做参数绑定),攻击者可通过接口注入,甚至跨服务通过数据同步 / 调用渗透到核心库;还有 NoSQL 注入(Mongo/Redis),分布式中缓存 / 文档库也是重灾区。

防护工具 / 策略

  • 基础:主流 ORM 框架原生防护(MyBatis 的 #{}、JPA 的参数绑定、GORM 的预编译),杜绝手写拼接 SQL;

  • 检测:静态代码扫描工具(SonarQube、FindBugs)、动态应用安全测试 DAST(OWASP ZAP、Burp Suite),CI/CD 流水线嵌入扫描,阻断带注入风险的代码上线;

  • 兜底:数据库侧防护(MySQL 的权限最小化、开启慢查询 / 审计日志,Redis 设置密码 + 禁止外网访问);

  • 进阶:数据库防火墙(阿里云 RDS 防火墙、华为云 DBFirewall),精准拦截注入语句。

    分布式落地关键:统一微服务的 ORM 使用规范,所有服务连库均走配置中心统一配置,禁止硬编码,数据库账号按服务做最小权限分配(如订单服务仅能操作订单库,无删库 / 跨库权限)

URL跳转漏洞

核心风险:传统 Web 只有一个前端入口,分布式中网关(如 Nginx/APISIX)、各微服务(如登录服务、支付服务)都可能有 URL 跳转功能(如登录后跳回原页面、第三方授权回调),若未做校验,攻击者可构造恶意跳转链接,诱导用户跳转到钓鱼网站,窃取账号 / 密码。

防护工具 / 策略

  • 代码层:白名单机制(硬编码允许跳转的域名,如仅允许跳转到自身域名、可信第三方域名),禁止使用用户传入的完整 URL 做跳转,仅解析 path 部分拼接;

  • 网关层:网关统一拦截(APISIX/Nginx/Zuul 配置 URL 跳转白名单,过滤恶意跳转参数,如 redirect_uri、url);

  • 前端层:CSP 策略配合(下文讲),限制页面的跳转源;

  • 辅助:添加跳转提示(如 “即将跳转到外部网站,是否继续?”),降低用户被骗概率。

    分布式落地关键网关做统一的 URL 跳转校验,所有服务的跳转请求均经过网关,避免各服务各自为战,白名单通过配置中心动态下发,方便全网更新。

内容安全CSP

核心风险:传统 Web 只需给主域名配置 CSP,分布式中多前端应用(微前端)、多子域名、多静态资源 CDN,若 CSP 配置混乱,不仅防不住 XSS,还会导致页面资源加载失败(如微前端的子应用、CDN 的静态资源被拦截)。

防护工具 / 策略

  • 配置方式:HTTP 响应头配置(推荐,比 meta 标签更灵活),支持动态修改;

  • 核心指令:default-src(默认资源加载源)、script-src(脚本加载源,核心防 XSS,指定仅允许从可信域名 / CDN 加载脚本,禁止 inline-script/eval)、img-src(图片源)、frame-src(iframe 源,防嵌套钓鱼);

  • 工具:CSP 生成器(OWASP CSP Generator)、CSP 监控工具(Sentry、浏览器开发者工具的 Console 面板,排查被拦截的资源);

    分布式落地关键网关统一配置 CSP 响应头,微前端的主应用 / 子应用、各服务的前端页面共用一套 CSP 基础规则,针对特殊服务(如支付、登录)做指令升级(如更严格的 script-src);CDN 域名统一加入白名单,避免跨 CDN 的资源拦截。

DDOS 攻击

核心风险:传统 Web 攻击单节点,分布式中微服务依赖链路长(如用户→网关→认证服务→业务服务→数据库),若某核心服务(如网关、认证服务)被 DDoS 攻击,会导致整个链路阻塞,甚至引发服务雪崩;且分布式下攻击者可针对多服务并行攻击,防护难度更高。

防护工具 / 策略:分基础设施层(云厂商兜底)、网关层(流量清洗)、服务层(限流降级)三层防护,缺一不可:

  • 基础设施层(核心):云厂商 DDoS 防护(阿里云 DDoS 高防、腾讯云大禹、百度云大禹),防护大流量攻击(如 SYN 洪水、UDP 洪水),清洗异常流量;

  • 网关层:API 网关限流(APISIX、Nginx、Spring Cloud Gateway),配置基于 IP / 令牌桶 / 漏桶的限流规则(如单 IP 每秒 100 请求、单接口每秒 1000 请求),拦截高频恶意请求;

  • 服务层:微服务框架原生限流(Sentinel、Hystrix、Resilience4j),针对服务间调用做接口限流 + 降级(如某服务被攻击,直接返回降级结果,避免拖垮上游服务);

  • 辅助:IP 黑白名单(网关 / 服务层均可配置),快速拦截已知恶意 IP,下文单独讲;

    分布式落地关键云厂商高防 + 网关限流 + 服务限流三层联动,核心服务(网关、认证、支付)配置更严格的限流规则;利用微服务的服务发现与熔断,若某服务被攻击,自动熔断该服务的调用,避免雪崩。

防护链路

核心风险

主流防护工具 / 策略

前端层

XSS、URL 跳转、CSRF

CSP、前端 XSS 过滤(DOMPurify)、CSRF Token、URL 跳转白名单

网关层

DDoS、注入、IP 攻击、网关漏洞

云厂商 DDoS 高防、APISIX/Nginx(限流 + WAF+IP 黑白名单)、CSP 统一配置

服务间层

未认证、未授权、数据明文

Istio(mTLS)、Spring Cloud Security、JWT/Token 认证、RBAC 授权

应用层

ORM 注入、代码漏洞、限流

MyBatis/JPA(参数绑定)、SonarQube(代码扫描)、Sentinel/Hystrix(限流降级)

数据层

敏感数据泄露、注入、篡改

数据库防火墙、加密存储(AES)、数据脱敏(Hutool)、数据库权限最小化

中间件层

未授权访问、数据泄露

Redis ACL、Kafka SASL、Prometheus 监控、中间件密码 + 内网访问

基础设施层

DDoS、服务器被攻击

云厂商 DDoS 高防、服务器防火墙、IP 黑白名单、最小权限账号

web 安全

  • 随着互联网的快速发展,信息安全问题就成为每一个企业十分关注的焦点问题之一了吧,此时在客户端的前端就是引发安全的高频的触发场景吧

  • 常见的安全问题有

    • XSS , CSRF ,网络劫持,hybird API 安全

    • 解决方案就是引入了新的概念:CSP,same-site,cookies 来实现新增安全问题吧

  • 核心问题讷就是:代码层面、架构层面、运维层面等三个维度来实现对应的考量吧

  • 总结就是

    • 跨站脚本攻击 XSS

    • 跨站请求伪造 CSRF

    • 点击劫持点击

    • HTTP 传输安全

    • 第三方依赖完全

XSS 安全

XSS 概念

Cross-Site-Scripting 跨站脚本攻击就是常说的 XSS 吧,是一种脚本注入攻击吧,攻击者通过向目标网站注入恶意执行脚本,使其在用户的浏览器上进行运行

攻击者可以获取得到用户的铭感信息例如:cookie sessionid 进而来危害数据安全吧

由于攻击者可以通过脚本来直接获取得到用户的一些铭感信息,就可以利用恶意代码的形式来向目标服务器获取得到对应的资源,从而造成危害吧

XSS 攻击原理

/**
 * 当把这种数据从客户端上传给服务端的时候
 * 核心 API 就是: innerHTML textContent
 * 以及从服务端获取得到这种数据,利用纯 HTML 的形式进行渲染的话,由于原本引用的图片链接就是一个 error 的,此时就会触发 onError 事件
 * 从而造成攻击:
 *     1. 纯 HTML 的渲染方式是
 *         container.innerHTML = data.imgContent;
 *         container.innerHTML = data.scriptContent;
 *     2. vue 的渲染方式是
 *         <div v-html="data.imgContent"></div>
 *         <div v-html="data.scriptContent"></div>
 *     3. react 的渲染方式是
 *         <div dangerouslySetInnerHTML={{ __html: data.imgContent }} />
 *         <div dangerouslySetInnerHTML={{ __html: data.scriptContent }} />
 * 防护方式就是:
 *     1. 分析这些数据的来源,一般来源于用户的输入,此时就需要对用户的输入的数据进行数据清洗
 *     2. 对于内容的渲染模式处理,避免上面的代码书写,除非必要,否则不建议使用
 *     3. 对于脚本内容,建议使用转义字符进行处理,避免直接渲染到页面上
 * */
const data = {
    imgContent: `<img src="一个错误的图片.png" onError='alert('图片加载失败')" />`,
    scriptContent: `<script src="错误的外部资源.js" onError='alert('脚本加载失败')'></script>`,
}

XSS 危害

获取cookie信息,安全记录以及进行钓鱼实现,未授权操作,获取页面操作,获取本地存储数据,劫持前端逻辑,发送网络请求,获取网站任意数据,偷取用户资料,欺骗用户等操作吧

XSS 分类

  • 反射型XSS:url 的形式

  • 存储型XSS:数据持久化

  • DOM XSS:纯前端类型的DOM操作

XSS 反射型攻击
  • 攻击者构造出特殊的 URL 的形式,启动包含有而已的执行代码吧

  • 用户打开带有恶意代码的 URL 的时候,网站服务器将恶意的代码从 URL 中获取得到,拼接到 HTML 中返回给浏览器

  • 用户浏览器接受到响应后解析执行,混在其中的恶意代码也就执行了

  • 恶意代码窃取用户数据并发送到攻击者的网站,获取冒充用户的行为,调用目标网站则执行攻击者指定的操作吧

/**
 * 反射型 XSS 攻击
 * 
 * vue
 *    <div v-html="$route.query.content"></div>
 * react
 *    <div dangerouslySetInnerHTML={{ __html: $route.query.content }} />
 */

const data = {
    loadUrl: 'https://example.com?content=<script>alert("XSS")</script>',
}
  • 出现的常见就是在服务端渲染的中的吧,因为核心是后端来进行对应的操作吧,以及存储型也是后端 server 需要预防的讷

  • 在后端模板引擎中的常见吧:express 中的 art-template 吧

XSS 存储型攻击
  • 将恶意代码提交到目标网站的数据库中

  • 用户打开目标网站的时候,网站服务器将恶意代码从数据库中取出,拼接到 html 中返回给浏览器

  • 用户浏览器接受到响应后的数据进行解析渲染,混在恶意代码中被执行吧

  • 恶意代码通过一些 api 来窃取用户数据并发送到攻击者的网站,冒充用户行为,调用目标网站接口执行攻击指定的操作吧

XSS DOM类型
  • 攻击者构造出特殊的URL,其中包含恶意代码

  • 用户打开带有恶意代码的 URL

  • 用户浏览器接受响应后解析执行,前端 javascript 执行这些恶意代码吧

XSS 攻击注入点

  • 在 HTML 中通过内嵌的文本,恶意内容使用 script 标签的形式引入

  • 在内敛的 javascript 中,拼接的数据突破了基本的原则

  • 在标签属性中,恶意内容包含引号,从而突破原生的一些限制吧,字符串,变量,方法名等吧

  • 在标签 href src 等属性中,包含了 javascript 的可执行代码吧

  • 在 onload onerror onclick 事件中注入了可执行运行的代码吧

  • 在 style 属性和 标签中,包含了类型的一些 bgc-image 的引入

  • 在 style 和 标签中,包含了 expression 这些 css 表达式吧

上面的这些都是会导致对应的XSS的攻击的讷

XSS 防御

  • 攻击者提交代码阶段防御

  • 浏览器执行阶段防御

输入过滤
  1. 用来提交信息的时候进行对应的前端输入过滤的操作,然后提交给后端进行存储

  2. 后端进行存储数据入库的时候,进行数据的二次过滤,实现二次校验的过滤实现,白名单机制来实现对应的操作吧

前端预防就是对内容进行合法性校验实现对应的html拼接渲染

对于后端的话就是只用一些库来实现过滤渲染实现:dot | js-xss | 通过转义的形式实现我们的操作吧

CSP 的内容安全协议:核心配置就是:meta 标签配置或者说通过配置http头部中进行操作吧

CSRF 安全

CSRF cross-site request forgery 跨站请求伪造,也是单点攻击 one click attack 或者说是 session riding 吧,是一种对于网站的恶意使用的情况吧

CSRF 原理

攻击者通过进入第三方网站,在第三方网站中,向攻击者网站发送跨站请求,利用受害者在被攻击网站获取的注册凭证绕开后台的用户校验,达到冒充用户被攻击的网站执行某些操作的目的吧

CSRF 攻击分类

  • GET 请求类型的 CSRF

    • 最常见的就是 img video audio 这样的静态资源请求的方式的来操作吧

  • POST 请求类型的 CSRF

    • form 表单类型最为常见吧

CSRF 防御机制

  • 同源检测来实现吧

    • 通过 origin | referer 等请求头校验来实现同源检测的实现吧

    • origin header 的话就是通过我们的:302 重定向来操作的讷

  • samesite

  • secure

  • httponly

  • path

  • domain

等字段来进行安全性的实践吧

以及还可能通过我们的 cors 设置来实现讷

以及 http 的传输安全的设置吧,核心就是设置为 https 加密一下吧

原本的 http 是明文传输的,此时在传输阶段中进行 https 的密文传输吧,对称加密和非对称加密来进行操作讷,核心流程的话看看我的另一篇文章吧

第三方库解决

  • npm audit 来检测依赖包的安全性

  • sonarqube 来校验仓库的安全性吧

  • snyk 定期来做操作吧

DDOS 安全

CC 攻击

IP 黑白名单