-
Highly Concurrent System Design Note
* Scaling: Increase computing power. * Caching: Add layers to the storage hierarchy. * Asynchronous patterns: Don't wait; just subscribe and publish. * Scale up (v…
-
从 OAuth 的角度探讨 PKCE 的本质
在 OAuth 2.1 标准中,Authorization Code(授权代码)流程涉及一些不太符合直觉的步骤和要求,其中就包括了 PKCE(RFC 7636)。虽然 PKCE 对于增强安全性的作用非常显然,但是为什么要这样实现,这种机制的本质原理和解决的底层问题是什么呢?笔者将尝试在这篇短文中谈一下自己的理解。 首先,抛开…
- Fri Jun 13 2025
利用 Redis 实现滑动窗口计数器速率限制
最近由于一些个人的项目需求,稍微研究了一下速率限制算法。常见的速率限制算法包括:漏水桶、代币桶、固定窗口日志、滑动窗口日志、滑动窗口计数器等(此外,还有一些利用指数退避增加惩罚时间的算法,不在本文的讨论范围之内)。这几种算法中,代币桶的性能开销最小,且允许猝发请求。不过在实际场景中,有时需要利用滑动窗口策略以保证最大的公平性…
-
如何正确地防御 CSRF 攻击
CSRF(跨站请求伪造)是一种常见的 Web 安全攻击 (也是找工作时面试官最喜欢问的问题之一,但是往往面试官自己都一知半解),攻击者可以诱导用户无意识地发出带有认证信息的恶意请求(如转账、改资料等敏感操作)。需要注意的是,虽然 CSRF 可以通过缓解措施阻止攻击,但如果存在 XSS(跨站脚本攻击)漏洞,多数 CSRF 缓解…
- Thu Apr 10 2025
My IntelliJ IDEA Setup
* Ultimate EAP: https://www.jetbrains.com/idea/nextversion * Community Edition: https://www.jetbrains.com/idea/download * Theme: Light with Light Header * Font: IB…
- Sun Mar 09 2025
It's Free Real Estate: Design the Perfect Blog
Nowadays, With so much free "real estate" to choose from, we can literally build a complete blog with blazingly fast worldwide CDN, automated CI/CD, distributed da…