Web 安全基础
Web 安全基础
Web 安全旨在保护网站、Web 应用和 Web 服务,防止入侵、数据窃取或破坏。这不仅是安全专家的事 — 凡是为 Web 构建产品的人都需要了解基础知识。
全景视角:OWASP Top 10
开放 Web 应用安全项目 (OWASP) 维护着一份 Web 应用十大最关键安全风险清单。可将其视为 Web 漏洞的“通缉榜”。当前清单包括:失效的访问控制(用户访问不应访问的内容)、加密失败(弱加密或无加密)、注入攻击(诱骗系统运行恶意代码)、不安全的设计(架构本身的缺陷)、安全配置错误(保留默认密码、暴露管理面板)、存在漏洞且过时的组件(使用已知漏洞的旧库)、身份认证失败(薄弱的登录系统)、软件和数据完整性失败(被篡改的代码或数据)、日志记录和监控失败(未察觉异常),以及服务端请求伪造(诱骗服务器发起不应发起的请求)。
常见攻击向量
攻击者有一套标准战术。SQL 注入发生在用户输入直接拼接进数据库查询时 — 攻击者在登录表单输入 SQL 命令,瞬间就能读取你的数据库。跨站脚本攻击 (XSS) 让攻击者将恶意脚本注入其他用户查看的页面,窃取会话或篡改网站。跨站请求伪造 (CSRF) 诱骗已登录用户在不知情下提交请求 — 如修改密码或转账。点击劫持在合法按钮上覆盖不可见元素,使用户点击非预期内容。不安全的反序列化允许攻击者通过发送恶意序列化对象执行任意代码。
真正有效的防御策略
输入验证是第一道防线 — 永远不要信任用户输入。必须在服务端验证,而非仅在浏览器端。输出编码确保展示用户数据时被视为文本而非可执行代码。内容安全策略 (CSP) 如同保安,明确告知浏览器允许加载哪些脚本、样式及其他资源来源。安全头增加防护层:HSTS 强制 HTTPS,X-Frame-Options 防止点击劫持,X-Content-Type-Options 阻止 MIME 嗅探,Referrer-Policy 控制发送的引用信息。认证方面,使用多因素认证,采用 bcrypt 或 Argon2 等强算法哈希密码,并实施速率限制以减缓暴力破解。授权方面,遵循最小权限原则 — 用户仅能访问绝对必要的资源 — 并使用基于角色的访问控制系统化管理权限。
将安全融入开发流程
安全不是最后打勾的清单项 — 它贯穿整个开发生命周期。设计阶段从威胁建模开始:可能出什么问题?我们如何知晓?开发阶段使用静态分析 (SAST) 在代码发布前捕获问题。测试阶段运行动态分析 (DAST) 发现运行时漏洞。扫描依赖 (SCA) 检查第三方库的已知漏洞。重大发布前进行渗透测试。上线后持续监控 — 你无法修复未知的问题。
安全头快速参考
Content-Security-Policy 控制浏览器可加载的资源。Strict-Transport-Security 强制 HTTPS。X-Frame-Options 防止网站被嵌入 iframe。X-Content-Type-Options 阻止浏览器猜测 MIME 类型。Referrer-Policy 控制发送的引用信息量。Permissions-Policy 控制网站可使用的浏览器功能。
