OWASP Top 10 简介
OWASP Top 10是全球公认的网络应用安全风险参考标准,为开发人员和安全专业人士提供权威性指导。该文件代表了关于当代网络应用所面临最严重安全风险的广泛共识。采纳OWASP Top 10可能是改变组织内软件开发文化、生产安全代码的最有效首步。当前发布的最新版本是OWASP Top 10 2025,之前的版本(2021年和2017年)仍然可以参考。
OWASP Top 10是一份随着威胁态势和安全分析发展而更新的活动文件。各组织通过实施此框架可以系统地降低应用组合中最严重的安全风险。该文件为开发团队提供了优先考虑安全工作和有效分配资源的结构基础。采纳此文件并开始确保网络应用最小化这些风险是应用程序安全性的基础,全球开发人员已普遍认可该标准为向更安全编码迈进的第一步。
注入攻击与命令执行
注入攻击(Injection attacks)仍然是网络应用中最普遍的漏洞。当不受信任的数据被发送到解释器作为命令或查询的一部分时,就会发生这类攻击。攻击者精心构造输入来执行非预期的操作,包括SQL注入、操作系统命令注入和模板语言注入。这些攻击会绕过输入验证并利用代码与数据之间的不充分分离。SQL注入允许攻击者修改数据库查询来访问、修改或删除数据。操作系统命令注入使攻击者能够在服务器上执行任意命令。
对注入漏洞的测试需要系统地分析所有应用入口点,包括查询参数、HTTP头、Cookie和外部数据源。有效的缓解措施依赖于参数化查询、预编译语句和上下文感知的输入验证。组织必须实施适合输出呈现上下文的输出编码——无论是HTML、JavaScript、URL还是CSS——以在数据到达解释器前中和恶意字符。测试应验证所有用户输入都通过参数化查询处理,确保特殊字符被正确转义,并且应用不会执行通过注入获得的动态生成代码。
身份验证与会话管理失效
身份验证失效使攻击者能够入侵用户账户、冒充其他用户或获得对应用的管理员访问权限。缺陷包括对凭证暴力破解攻击保护不足、会话管理不安全、缺少多因素身份验证以及在整个应用生命周期中对身份验证凭证处理不当。会话令牌存储不安全或未加密传输会为会话劫持创建攻击面。弱密码策略、密码恢复机制缺陷和账户锁定机制缺失进一步加剧了风险。
鲁棒实现需要安全的会话管理机制:安全地存储会话令牌,应用适当的Cookie标志(HttpOnly防止XSS访问、Secure强制HTTPS传输、SameSite缓解CSRF),实施会话过期超时,以及记录可疑的身份验证活动。安全测试必须包括暴力破解抵抗力评估、会话令牌分析、密码恢复和账户锁定机制验证。测试人员应尝试多次登录失败来验证速率限制,检查密码重置令牌是否安全生成和验证,确认多因素身份验证正确实现。
跨站脚本攻击(XSS)与数据注入
跨站脚本(Cross-Site Scripting, XSS)是一类注入漏洞,攻击者将恶意脚本引入到其他用户查看的内容中。存在三种变体:反射型XSS(用户输入立即回显而不进行清理)、存储型XSS(恶意数据保存在应用存储中)和基于DOM的XSS(客户端代码不安全地处理不受信任的数据)。易受攻击的应用会在没有适当转义的情况下呈现用户提供的内容,允许在受害者浏览器中执行任意JavaScript。攻击者可以窃取会话Cookie、记录用户键盘输入、执行钓鱼攻击或在用户浏览器上代表其执行操作。
XSS缓解需要为所有呈现的数据进行上下文感知的输出编码:HTML上下文中的HTML实体编码、JavaScript上下文中的JavaScript字符串转义、URL参数的URL编码和样式表的CSS转义。内容安全策略(CSP)通过限制脚本源提供额外的保护层。全面测试涵盖多个注入向量,验证消毒有效性跨越输出上下文,并确认CSP头配置阻止内联脚本和外部源。测试人员应在各种应用输出位置尝试XSS有效负载,包括HTML属性、JavaScript字符串和URL参数。
跨站请求伪造(CSRF)
跨站请求伪造(Cross-Site Request Forgery, CSRF)攻击利用浏览器自动传输身份验证凭证(Cookie)的特性,迫使经过身份验证的用户在其他网站上执行非预期的操作。易受攻击的应用会信任任何包含有效会话Cookie的请求,而不验证请求的来源。这使得未授权操作成为可能,包括密码更改、资金转账、管理员修改和数据泄露。攻击者可以通过在恶意网站上放置隐藏表单或脚本来发起CSRF攻击,该网站在用户访问时自动将用户的浏览器定向到目标应用发送有害请求。
CSRF保护采用绑定到个别用户会话的同步器令牌——这些令牌必须伴随任何状态修改请求(POST、PUT、DELETE)并在服务器端针对会话令牌进行验证。其他机制包括SameSite Cookie属性、Referer头验证和Origin头验证。安全测试必须确认CSRF保护机制防御所有状态修改操作,并验证令牌生成和验证功能在不同用户会话和应用流中正确工作。测试人员应尝试从不同来源发送状态修改请求来验证令牌检查是否有效。
安全测试方法论
OWASP网络安全测试指南(Web Security Testing Guide, WSTG)为授权的网络应用安全测试提供了结构化的方法。该指南包含信息收集、配置分析、输入处理测试、身份验证机制验证、会话管理评估、授权测试和业务逻辑验证。版本4.2代表当前稳定版本,可用作网络托管内容和PDF文档。WSTG项目拥有183名贡献者和9903个GitHub星标,证明其在安全社区中的广泛采纳和认可。
全面的安全测试必须覆盖所有应用入口点,包括HTTP参数、头、表单数据、Cookie和API接口。测试结合了静态代码分析以查找设计时漏洞与动态测试运行中的应用以识别运行时问题。测试需要适当的授权和遵守所有适用法律。组织应同时采用安全专业人员的手动测试和自动扫描工具,关联结果以识别利用路径并根据风险评估优先考虑修复工作。测试应验证所有输入验证控件,确认认证和授权检查得当实施。
HTTP安全头和缓存控制
HTTP响应头实施多层网络应用安全防护。内容安全策略(Content Security Policy, CSP)限制浏览器为给定页面加载的资源,通过允许列表强制来缓解XSS攻击。跨源资源共享(Cross-Origin Resource Sharing, CORS)控制对来自不同来源资源的访问,而跨源资源策略(Cross-Origin Resource Policy, CORP)保护免受来自其他来源的特定请求类型,缓解推测性侧信道攻击。权限策略提供了一种机制,允许网络开发人员明确声明网站上哪些功能可以使用或不能使用。
安全HTTP头配置需要Cookie安全标志:HttpOnly防止JavaScript访问以保护免受XSS凭证盗窃,Secure强制HTTPS-only传输,SameSite提供CSRF保护。应用必须正确设置缓存控制头以防止敏感数据存储在浏览器或代理缓存中。安全测试验证所有安全头的存在和正确性,确认缓存指令适当限制敏感响应缓存,并验证CORS策略符合应用架构要求。测试人员应检查所有HTTP响应头,验证安全头(如Strict-Transport-Security、X-Content-Type-Options、X-Frame-Options)已正确配置,确认缓存头防止缓存敏感信息。