摘要:
Cookie 是 Web 开发中最基础也最容易被误解的机制之一。很多开发者会用 Request.Cookies["name"] 读值、用 Response.Cookies.Append(...) 写值,却说不清三件事:为什么请求侧读不到 Cookie 的属性?敏感 数据 放进 Cookie 该如何加
阅读全文
posted @ 2026-06-04 05:25
无风听海
阅读(3)
推荐(0)
摘要:
I have enough to write comprehensive coverage. Let me fetch the Minimal API Results.Redirect details and the open-redirect page for completeness.I now
阅读全文
posted @ 2026-06-04 05:23
无风听海
阅读(4)
推荐(0)
摘要:
1. 背景:PKCE 为何存在 PKCE(Proof Key for Code Exchange,发音 “pixie”,定义于 RFC 7636)是对 OAuth 2.0(Open Authorization 2.0)授权码流程(Authorization Code Flow)的安全增强机制。它最初
阅读全文
posted @ 2026-06-03 08:46
无风听海
阅读(1)
推荐(0)
摘要:
一、Scope 是什么 Scope(权限范围)是 OAuth 2.0(Open Authorization 2.0)授权框架中用于限定访问令牌(Access Token)权限边界的机制。它回答的核心问题不是"你是谁",而是"这个令牌被允许做什么"。 OAuth 2.0 的核心思想是「最小权限授权」:
阅读全文
posted @ 2026-06-03 08:45
无风听海
阅读(3)
推荐(0)
摘要:
一、定位:它解决什么问题 IndexedDB 是浏览器内置的、唯一面向大规模结构化数据、支持事务与索引查询的客户端存储方案。把它和其他方案并列,定位立刻清晰: 维度 Cookie localStorage IndexedDB 容量 ~4 KB ~5–10 MB 磁盘配额的数百 MB ~ 数 GB 数
阅读全文
posted @ 2026-06-02 18:34
无风听海
阅读(9)
推荐(0)
摘要:
HttpContext 把一次 HTTP 交互拆成了两个层面:Request 描述「这一次请求」,而 Connection 描述「承载这次请求的那条底层通道」。这条分界线看似简单,却牵扯出一连串容易踩坑的语义问题——真实客户端 IP 到底从哪来、请求该怎么唯一标识、mTLS 为什么在 HTTP/2
阅读全文
posted @ 2026-06-02 18:33
无风听海
阅读(7)
推荐(0)
摘要:
一、HTTP 400 的语义定位 HTTP 400 Bad Request 由 RFC 9110 定义,语义是:服务端因请求自身的语法或语义错误,拒绝处理本次请求。关键在于"错误来自客户端",与 5xx 的"服务端出错"严格区分。 在 API 设计实践中,400 承担多种具体场景: 场景 推荐状态码
阅读全文
posted @ 2026-06-01 22:05
无风听海
阅读(7)
推荐(0)
摘要:
前言 JavaScript 的异步编程经历了三个时代:回调函数(Callback)、 Promise 、async/await。三者并非相互替代,而是层层构建在同一套运行时基础之上。要真正掌握 async/await,必须先理解 Promise;要真正理解 Promise,必须先理解 JavaScr
阅读全文
posted @ 2026-06-01 22:04
无风听海
阅读(7)
推荐(0)
摘要:
JWT(JSON Web Token)是现代 Web 应用中最广泛使用的身份验证与信息交换标准之一。本文从原理到实践,系统性地介绍 JWT 的方方面面。 一、什么是 JWT? JWT(JSON Web Token)是一种开放标准(RFC 7519),定义了一种紧凑且自包含的方式,以 JSON 对象的
阅读全文
posted @ 2026-05-31 07:07
无风听海
阅读(56)
推荐(0)
摘要:
一、背景:SOP 与 CORS 的关系 理解 CORS 之前,必须先理解它试图解决的问题从哪里来。 1.1 SOP(Same-Origin Policy,同源策略) 浏览器内置了一条基础安全规则:来自 A 站的 JS 代码,不能读取 B 站返回的响应内容。 这条规则叫做同源策略。 "同源"要求协议、
阅读全文
posted @ 2026-05-31 07:01
无风听海
阅读(6)
推荐(0)
摘要:
前言 认证系统是 Web 应用安全的核心边界。然而在实践中,许多团队对 OAuth 2.0 的实现只停留在"能用"的层面——把 Token 存进 localStorage,用一个固定的 Refresh Token 静默续期,然后默默祈祷没有攻击者盯上自己的用户。 这种做法在安全审计中几乎无法通过。
阅读全文
posted @ 2026-05-30 08:14
无风听海
阅读(14)
推荐(0)
摘要:
引言:一场发布会,一个新坐标 2026年5月25日,上海。在 IEEE(电气电子工程师学会)国际电路与系统研讨会上, 华为 公司董事、半导体业务部总裁何庭波走上台,发表了一篇题为《半导体新路径探索与实践》的主旨演讲。 演讲的核心只有一件事:正式提出"韬(τ)定律"。 这是中国企业第一次在全球半导体领
阅读全文
posted @ 2026-05-30 08:13
无风听海
阅读(23)
推荐(0)
摘要:
一、客户端存储全景 在深入任何单一 API 之前,先建立整体视图。浏览器提供了多种客户端存储机制,各有不同的设计定位: 特性 Cookie sessionStorage localStorage IndexedDB 生命周期 可设过期时间 标签页关闭即清除 永久(手动清除) 永久 存储上限 ~4 K
阅读全文
posted @ 2026-05-29 08:39
无风听海
阅读(19)
推荐(0)
摘要:
一、同源策略(SOP):一切的起点 1.1 什么是同源 浏览器用协议 + 主机 + 端口三元组定义"源"( Origin ): URL 与 https://app.example.com 的关系 https://app.example.com/page ✅ 同源 http://app.example
阅读全文
posted @ 2026-05-28 08:06
无风听海
阅读(15)
推荐(0)
摘要:
一、先建立正确的心智模型 1.1 Cookie 的归属 Cookie 永远属于设置它的那个 host,与请求的目标或来源无关。 服务器 app.example.com 响应头: Set-Cookie: session=abc; Path=/ → 浏览器存储: { name: "session", v
阅读全文
posted @ 2026-05-28 08:03
无风听海
阅读(12)
推荐(0)
摘要:
一、背景 现代 Web 应用中,用户往往同时打开多个标签页。一个常见困境是: 标签页 A 完成登录,标签页 B 仍显示未登录 标签页 A 修改了购物车,标签页 B 数量没有更新 标签页 A 切换了深色模式,其他标签页毫无反应 传统解法要么依赖轮询 localStorage,要么借助 WebSocke
阅读全文
posted @ 2026-05-27 07:55
无风听海
阅读(17)
推荐(0)
摘要:
一、为什么需要 Web Worker? JavaScript 是单线程语言。浏览器中,所谓的"主线程"同时负责: 解析与执行 JS 代码 处理 DOM 操作与事件 页面布局与渲染(Layout / Paint) 这意味着,一旦你在主线程上执行耗时计算,渲染管线就会被阻塞,用户会看到页面"卡死"——按
阅读全文
posted @ 2026-05-27 07:53
无风听海
阅读(16)
推荐(0)
摘要:
1. 从 HTTP 的无状态性说起 HTTP 协议本质上是无状态的,每次请求都是独立的消息,服务端默认不保留任何上下文。要在多次请求之间维持用户状态,本质上只有两条路: 把数据放在客户端(Cookie 自包含数据),或把数据放在服务端(客户端只持有一个 ID)。 ASP.NET Core 的 Ses
阅读全文
posted @ 2026-05-25 07:21
无风听海
阅读(5)
推荐(0)
摘要:
前言 身份验证(Authentication)与授权(Authorization)是每一个 Web 应用的安全基础。自 .NET Framework 4.5 起,微软将 WIF(Windows Identity Foundation)全面整合进 .NET,引入了以 Claim 为核心的现代身份体系。
阅读全文
posted @ 2026-05-25 07:19
无风听海
阅读(7)
推荐(0)
摘要:
一、state 存在的根本原因 理解 state 参数,必须先从它要解决的攻击场景出发。 OAuth 场景下的 CSRF OAuth 2.0 授权码流程的最后一步,是授权服务器将浏览器重定向到客户端的 callback 端点: GET https://client.example.com/callb
阅读全文
posted @ 2026-05-24 08:25
无风听海
阅读(21)
推荐(0)
摘要:
一、Cookie 是什么 Cookie 是服务器通过 HTTP 响应头写入浏览器的键值对数据,浏览器在后续请求中会自动将其携带回服务器。它是 Web 状态管理的基石,解决了 HTTP 协议无状态的本质问题。 基本数据流: Server → Set-Cookie: sessionId=abc123;
阅读全文
posted @ 2026-05-24 08:22
无风听海
阅读(19)
推荐(0)
摘要:
1. 引言:一个字符串背后的身份体系 在 OAuth 2.0 的整个生态里,client_id 是出现频率最高却最容易被忽视的参数之一。它几乎出现在每一个授权请求的 URL 里,开发者往往只是将其视为"配置项",从 IdP 控制台粘贴过来填进代码就完事了。 但深入 RFC 规范后会发现:client
阅读全文
posted @ 2026-05-23 10:12
无风听海
阅读(17)
推荐(0)
摘要:
Web 安全里有两个极容易混淆的概念:跨域和跨站。它们听起来相似,边界却截然不同,对应的攻击手段和防御方案也完全不同。 本文从浏览器的同源策略(SOP,Same-Origin Policy)出发,系统梳理跨域的 CORS(Cross-Origin Resource Sharing,跨域资源共享)机制
阅读全文
posted @ 2026-05-23 10:10
无风听海
阅读(9)
推荐(0)
摘要:
git fsck(File System ChecK)是 Git 内置的仓库完整性验证工具。它通过遍历对象数据库,验证每一个对象的哈希值与内容是否一致,找出悬空对象、损坏数据和引用断裂等问题。理解 git fsck,本质上就是理解 Git 的对象存储模型。 一、Git 对象模型:理解 fsck 的前
阅读全文
posted @ 2026-05-22 08:44
无风听海
阅读(19)
推荐(0)
摘要:
一、从请求管道说起 ASP.NET Core 的核心是一条中间件管道(Middleware Pipeline)。每一个 HTTP 请求都会沿着这条管道依次经过各个 中间件 ,最终产生响应。 HTTP 请求 异常处理 UseExceptionHandler 静态文件 UseStaticFiles 🔵
阅读全文
posted @ 2026-05-22 08:39
无风听海
阅读(5)
推荐(0)
摘要:
一、什么是隐式转换 类型系统的核心职责是约束,但过度约束会让代码变得啰嗦。隐式转换(Implicit Conversion)是 C# 在"类型安全"和"代码简洁"之间找到的一个平衡点: int i = 42; long l = i; // 隐式转换:int → long,无需任何语法 double
阅读全文
posted @ 2026-05-21 05:26
无风听海
阅读(6)
推荐(0)
摘要:
一、从痛点说起 在 ASP.NET Core Minimal API 出现之前,Controller 时代的返回类型写法早已让人习惯了模糊性: // Controller 时代 —— 返回类型完全不透明 public IActionResult GetUser(int id) { if (id <=
阅读全文
posted @ 2026-05-21 05:24
无风听海
阅读(5)
推荐(0)
摘要:
一、从痛点说起 在 ASP.NET Core Minimal API 出现之前,Controller 时代的返回类型写法早已让人习惯了模糊性: // Controller 时代 —— 返回类型完全不透明 public IActionResult GetUser(int id) { if (id <=
阅读全文
posted @ 2026-05-20 08:24
无风听海
阅读(7)
推荐(0)
摘要:
一、从一个问题开始 你写了一个 Web API,有时候要返回数据,有时候要返回 404,有时候要返回 400——这三种情况的返回值类型完全不同,一个 C# 方法怎么能同时返回多种东西? 这就是 IActionResult 存在的根本原因。它的本质是:封装"如何把结果写入 HTTP 响应"的逻辑的统一
阅读全文
posted @ 2026-05-20 08:17
无风听海
阅读(10)
推荐(0)
摘要:
一、背景与问题起源 现代 Web 应用日趋复杂,用户常常在同一域名下打开多个标签页。设想以下场景: 用户在标签页 A 登录,标签页 B 需要同步登录态 多个标签页共享同一个 WebSocket 长连接,避免重复建立 多标签页需要协同操作同一份内存数据(购物车、消息列表) 传统的解决方案各有缺陷: 方
阅读全文
posted @ 2026-05-18 07:21
无风听海
阅读(26)
推荐(0)