OWASP 应用程序安全验证标准 4.0.3
控制项模式应用安全验证标准是一份应用安全需求或测试清单,可供架构师、开发人员、测试人员、安全专家、工具供应商和用户用来定义、构建、测试和验证安全应用程序。
确保应用程序的构建和部署过程以安全且可重复的方式进行,例如使用 CI/CD 自动化、自动化配置管理和自动化部署脚本。
验证编译器标志是否已配置为启用所有可用的缓冲区溢出保护和警告,包括堆栈随机化、数据执行防护,以及在发现不安全的指针、内存、格式字符串、整数或字符串操作时中断构建。
验证服务器配置是否已根据所使用的应用服务器和框架的建议进行加固。
验证应用程序、配置和所有依赖项是否可以使用自动部署脚本重新部署,这些脚本应基于有文档记录且经过测试的操作手册,并在合理时间内完成,或能够从备份中及时恢复。
验证授权管理员是否能够验证所有与安全相关的配置的完整性,以检测篡改。
验证所有组件是否是最新的,最好在构建或编译时使用依赖检查工具。 (C2)
确认已移除所有不需要的功能、文档、示例应用和配置。
验证如果应用程序资源(如 JavaScript 库、CSS 或网页字体)托管在内容分发网络 (CDN) 或外部提供商处,是否使用子资源完整性 (SRI) 来验证资源的完整性。
验证第三方组件来自预定义的、可信的且持续维护的存储库。(C2)
确保维护所有使用中的第三方库的软件材料清单(SBOM)。(C2)
通过对第三方库进行沙箱化或封装,仅将所需的行为暴露给应用程序,以验证攻击面是否已减少。(C2)
[已删除,7.4.1 的重复项]
确认在生产环境中禁用网页或应用服务器以及应用框架的调试模式,以消除调试功能、开发者控制台和意外的安全信息泄露。
验证 HTTP 头或 HTTP 响应的任何部分是否不会泄露系统组件的详细版本信息。
验证每个 HTTP 响应是否包含 Content-Type 头。如果内容类型是 text/*、*/xml 或 application/xml,还应指定一个安全的字符集(例如 UTF-8、ISO-8859-1)。内容必须与提供的 Content-Type 头匹配。
验证所有 API 响应是否包含 Content-Disposition: attachment; filename="api.json" 头(或其他适合内容类型的文件名)。
验证是否存在能够帮助减轻 HTML、DOM、JSON 和 JavaScript 注入漏洞等 XSS 攻击影响的内容安全策略(CSP)响应头。
确认所有响应都包含 X-Content-Type-Options: nosniff 头。
验证是否在所有响应和所有子域上都包含 Strict-Transport-Security 头,例如 Strict-Transport-Security: max-age=15724800; includeSubdomains。
验证是否包含合适的 Referrer-Policy 头,以避免通过 Referer 头向不可信方暴露 URL 中的敏感信息。
验证默认情况下网页应用的内容不能被嵌入第三方网站,并且仅在必要时使用适当的 Content-Security-Policy: frame-ancestors 和 X-Frame-Options 响应头允许嵌入相同的资源。
验证应用服务器仅接受应用程序/API 使用的 HTTP 方法,包括预检 OPTIONS,并记录/报警任何对应用程序上下文无效的请求。
确认提供的 Origin 头未被用于身份验证或访问控制决策,因为 Origin 头很容易被攻击者篡改。
验证跨源资源共享(CORS)Access-Control-Allow-Origin 头是否使用严格的允许列表来匹配受信任的域名和子域名,并且不支持“null”来源。
验证由可信代理或 SSO 设备添加的 HTTP 头,例如承载令牌,是否已被应用程序认证。