CISO助手
完成度
0%(0/286)
评估报告
OWAS

OWASP 应用程序安全验证标准 4.0.3

控制项模式

应用安全验证标准是一份应用安全需求或测试清单,可供架构师、开发人员、测试人员、安全专家、工具供应商和用户用来定义、构建、测试和验证安全应用程序。

版本: 4.0.3覆盖状态: 完整覆盖 (286/286)控制项/量表/总计: 286/0/286当前展示: 57 / 28614 个分类
V2.1.1用户设置的密码长度至少为12个字符(多个空格合并后)控制项
Authentication / 密码安全

验证用户设置的密码长度至少为12个字符(合并多个空格后)。(C6)

评估
评估状态:
评估备注:
V2.1.2允许使用至少64个字符的密码,但超过128个字符的密码将被拒绝控制项
Authentication / 密码安全

验证是否允许至少64个字符的密码,以及是否拒绝超过128个字符的密码。(C6)

评估
评估状态:
评估备注:
V2.1.3密码不会被截断控制项
Authentication / 密码安全

确认密码未被截断。但是,连续的多个空格可能会被替换为一个空格。(C6)

评估
评估状态:
评估备注:
V2.1.4密码中允许使用任何可打印的 Unicode 字符,包括诸如空格和表情符号等语言中性字符控制项
Authentication / 密码安全

验证密码中允许使用任何可打印的 Unicode 字符,包括空格和表情符号等语言中性字符。

评估
评估状态:
评估备注:
V2.1.5验证用户是否可以更改他们的密码控制项
Authentication / 密码安全

验证用户能否更改他们的密码。

评估
评估状态:
评估备注:
V2.1.6更改密码功能需要用户提供当前密码和新密码控制项
Authentication / 密码安全

验证密码更改功能是否需要用户的当前密码和新密码。

评估
评估状态:
评估备注:
V2.1.7在账户注册、登录和密码更改期间提交的密码会根据一组泄露密码进行检查,这可以在本地进行(例如,系统密码策略下的最常用1,000或10,000个密码)或使用外部API进行检查控制项
Authentication / 密码安全

验证在账户注册、登录和密码更改过程中提交的密码是否与一组已泄露的密码进行核对,可以在本地进行(例如与系统密码策略匹配的前1000或10000个最常用密码)或使用外部API进行核对。如果使用 API,应使用零知识证明或其他机制以确保明文密码不会被发送或用于验证密码是否被泄露。如果密码已被泄露,应用程序必须要求用户设置一个新的未泄露密码。(C6)

评估
评估状态:
评估备注:
V2.1.8提供密码强度测量器以帮助用户设置更强的密码控制项
Authentication / 密码安全

确认提供密码强度测量工具,以帮助用户设置更强的密码。

评估
评估状态:
评估备注:
V2.1.9没有限制密码字符类型的组合规则控制项
Authentication / 密码安全

验证是否没有限制允许字符类型的密码组成规则。密码不应要求包含大写或小写字母、数字或特殊字符。(C6)

评估
评估状态:
评估备注:
V2.1.10没有定期凭证更换或密码历史要求控制项
Authentication / 密码安全

确认没有定期凭证轮换或密码历史记录要求。

评估
评估状态:
评估备注:
V2.1.11允许使用“粘贴”功能、浏览器密码助手和外部密码管理器控制项
Authentication / 密码安全

确认允许使用“粘贴”功能、浏览器密码助手和外部密码管理器。

评估
评估状态:
评估备注:
V2.1.12用户可以选择暂时查看整个被遮挡的密码,或者在不具备此内置功能的平台上暂时查看密码的最后一个输入字符控制项
Authentication / 密码安全

确认用户能够选择临时查看整个被掩码的密码,或者在不具备此内置功能的平台上临时查看密码的最后一个输入字符。

评估
评估状态:
评估备注:
V2.2.1反自动化控制对于减轻被盗凭证测试、暴力破解和账户锁定攻击非常有效控制项
Authentication / 通用身份验证器安全

验证防自动化控制是否能有效减轻凭证被泄露测试、暴力破解和账户锁定攻击。这些控制措施包括阻止最常被攻破的密码、软锁定、速率限制、验证码、尝试之间持续增加的延迟、IP地址限制,或基于风险的限制,例如位置、设备上的首次登录、近期解锁账户的尝试或类似情况。请验证单个账户每小时的失败尝试次数不超过100次。

评估
评估状态:
评估备注:
V2.2.2弱身份验证方式(如短信和电子邮件)的使用仅限于二次验证和交易批准,而不能用作更安全身份验证方法的替代控制项
Authentication / 通用身份验证器安全

验证弱验证方法(如短信和电子邮件)的使用是否仅限于二次验证和交易批准,而不是作为更安全验证方法的替代。验证在使用弱方法之前是否提供了更强的验证方法,用户是否意识到风险,或者是否已采取适当措施来限制账户被入侵的风险。

评估
评估状态:
评估备注:
V2.2.3在身份验证详细信息更新后(例如凭证重置、电子邮件或地址更改、从未知或高风险位置登录),会向用户发送安全通知控制项
Authentication / 通用身份验证器安全

验证在更新认证信息后(如凭证重置、邮箱或地址更改、从未知或有风险的位置登录)是否向用户发送安全通知。优先使用推送通知而非短信或电子邮件,但在没有推送通知的情况下,短信或电子邮件也是可以接受的,只要通知中不泄露敏感信息。

评估
评估状态:
评估备注:
V2.2.4验证针对网络钓鱼的冒充抵抗能力,例如使用多因素认证、具意图的加密设备(如带有推送认证的连接密钥),或在更高级的AAL级别使用客户端证书控制项
Authentication / 通用身份验证器安全

验证防止网络钓鱼的冒充抵抗措施,例如使用多因素认证、带有意图的加密设备(如带有按压认证功能的连接密钥),或在更高的AAL级别使用客户端证书。

评估
评估状态:
评估备注:
V2.2.5当凭证服务提供商(CSP)与进行身份验证的应用程序分开时,双方端点之间应建立相互认证的 TLS控制项
Authentication / 通用身份验证器安全

验证在凭证服务提供商(CSP)与验证身份的应用程序分离的情况下,两端点之间是否已建立相互认证的 TLS。

评估
评估状态:
评估备注:
V2.2.6通过强制使用一次性密码(OTP)设备、加密认证器或查找码来验证重放抵抗能力控制项
Authentication / 通用身份验证器安全

通过强制使用一次性密码(OTP)设备、加密认证器或查询代码来验证重放抵抗能力。

评估
评估状态:
评估备注:
V2.2.7通过要求输入一次性密码(OTP)令牌或用户发起的操作(如按下 FIDO 硬件密钥上的按钮)来验证身份验证意图控制项
Authentication / 通用身份验证器安全

通过要求输入一次性密码(OTP)令牌或用户发起的操作(例如按下 FIDO 硬件钥匙上的按钮)来验证身份认证意图。

评估
评估状态:
评估备注:
V2.3.1验证系统生成的初始密码或激活码应当安全地随机生成,应至少包含6个字符,并且可以包含字母和数字,并在短时间后过期控制项
Authentication / 身份验证器生命周期

验证系统生成的初始密码或激活码应当是安全随机生成的,应至少包含6个字符,并且可以包含字母和数字,且应在短时间后失效。这些初始凭证不得作为长期密码使用。

评估
评估状态:
评估备注:
V2.3.2支持注册和使用用户提供的身份验证设备,例如 U2F 或 FIDO 令牌控制项
Authentication / 身份验证器生命周期

验证是否支持用户提供的身份验证设备的注册和使用,例如 U2F 或 FIDO 令牌。

评估
评估状态:
评估备注:
V2.3.3续订说明会提前发送,以便为有时间限制的认证器进行续订控制项
Authentication / 身份验证器生命周期

确认续订说明已提前发送,以便更新有时间限制的身份验证器。

评估
评估状态:
评估备注:
V2.4.1密码以抗离线攻击的形式存储控制项
Authentication / 凭据存储

验证密码是否以能够抵抗离线攻击的形式存储。密码必须使用批准的单向密钥派生或密码哈希函数进行加盐和哈希。密钥派生和密码哈希函数在生成密码哈希时以密码、盐和成本因子作为输入。(C6)

评估
评估状态:
评估备注:
V2.4.2盐至少为 32 位长度,并且可以任意选择,以尽量减少存储哈希之间的盐值冲突控制项
Authentication / 凭据存储

确认盐值长度至少为32位,并应任意选择以最小化存储的哈希值之间的盐值冲突。对于每个凭证,应存储唯一的盐值及其生成的哈希值。(C6)

评估
评估状态:
评估备注:
V2.4.3如果使用 PBKDF2,迭代次数应尽可能大,以服务器验证性能允许为准,通常至少应为 100,000 次迭代控制项
Authentication / 凭据存储

请确保如果使用 PBKDF2,则迭代次数应尽可能大,在验证服务器性能允许的范围内,通常至少为 100,000 次迭代。(C6)

评估
评估状态:
评估备注:
V2.4.4如果使用 bcrypt,其工作因子应尽可能大,以适应验证服务器的性能,最小值为 10控制项
Authentication / 凭据存储

验证如果使用 bcrypt,工作因子应尽可能大,以匹配验证服务器的性能,最小值为 10。(C6)

评估
评估状态:
评估备注:
V2.4.5对密钥派生函数进行额外的迭代,使用只有验证方知道的秘密盐值控制项
Authentication / 凭据存储

验证是否执行了密钥派生函数的额外迭代,使用仅验证者知道的秘密盐值。使用经批准的随机比特生成器 [SP 800-90Ar1] 生成盐值,并提供至少符合 SP 800-131A 最新版本规定的最小安全强度。秘密盐值应与哈希密码分开存储(例如,在像硬件安全模块这样的专用设备中)。

评估
评估状态:
评估备注:
V2.5.1系统生成的初始激活或恢复密钥不会以明文形式发送给用户控制项
Authentication / 凭证恢复

验证系统生成的初始激活或恢复密钥未以明文形式发送给用户。(C6)

评估
评估状态:
评估备注:
V2.5.2确认密码提示或基于知识的身份验证(所谓的“密保问题”)不存在控制项
Authentication / 凭证恢复

确认密码提示或基于知识的身份验证(所谓的“密保问题”)不存在。

评估
评估状态:
评估备注:
V2.5.3验证密码凭证恢复不会以任何方式泄露当前密码控制项
Authentication / 凭证恢复

验证密码凭证恢复不会以任何方式泄露当前密码。 (C6)

评估
评估状态:
评估备注:
V2.5.4验证共享或默认账户不存在(e控制项
Authentication / 凭证恢复

验证共享或默认账户不存在(例如“root”、“admin”或“sa”)。

评估
评估状态:
评估备注:
V2.5.5如果认证因素被更改或更换,用户会收到此事件的通知控制项
Authentication / 凭证恢复

确认如果身份验证因素被更改或替换,用户会收到此事件的通知。

评估
评估状态:
评估备注:
V2.5.6验证忘记的密码以及其他恢复路径时,请使用安全的恢复机制,例如基于时间的一次性密码(TOTP)或其他软令牌、移动推送或其他离线恢复机制控制项
Authentication / 凭证恢复

验证忘记的密码以及其他恢复途径时,应使用安全的恢复机制,例如基于时间的一次性密码(TOTP)或其他软令牌、移动推送或其他离线恢复机制。(C6)

评估
评估状态:
评估备注:
V2.5.7如果一次性密码或多因素身份验证因素丢失,则身份验证的证据与注册时的水平相同控制项
Authentication / 凭证恢复

确认如果OTP或多因素身份验证因素丢失,身份验证的证据应与注册时的级别相同。

评估
评估状态:
评估备注:
V2.6.1查询密钥只能使用一次控制项
Authentication / 查找秘密验证器

验证查找密钥只能使用一次。

评估
评估状态:
评估备注:
V2.6.2查找秘密具有足够的随机性(112 位熵),或者如果熵少于 112 位,则使用唯一且随机的 32 位盐进行加盐,并用经批准的单向哈希进行哈希控制项
Authentication / 查找秘密验证器

验证查找密钥是否具有足够的随机性(112位熵),如果熵不足112位,则使用唯一且随机的32位盐进行加盐,并使用批准的单向哈希进行哈希。

评估
评估状态:
评估备注:
V2.6.3查找秘密能够抵御离线攻击,例如可预测的值控制项
Authentication / 查找秘密验证器

验证查找密钥能够抵御离线攻击,例如可预测值的攻击。

评估
评估状态:
评估备注:
V2.7.1默认情况下,不提供带外(NIST“受限”)明文身份验证方式,如短信或公共交换电话网络(PSTN),而是优先提供更强的替代方案,如推送通知。控制项
Authentication / 带外验证器

验证默认情况下不提供基于明文的带外(NIST“受限制”)认证方式,例如短信或公用交换电话网(PSTN),并且首先提供更强的替代方案,例如推送通知。

评估
评估状态:
评估备注:
V2.7.2带外验证器会在 10 分钟后使带外身份验证请求、代码或令牌失效控制项
Authentication / 带外验证器

验证带外验证器会在 10 分钟后使带外身份验证请求、代码或令牌失效。

评估
评估状态:
评估备注:
V2.7.3带外验证器的身份验证请求、代码或令牌只能使用一次,且仅用于原始身份验证请求控制项
Authentication / 带外验证器

验证带外验证器的身份验证请求、代码或令牌仅可使用一次,并且仅适用于原始身份验证请求。

评估
评估状态:
评估备注:
V2.7.4带外身份验证器和验证器通过一个独立的安全通道进行通信控制项
Authentication / 带外验证器

验证带外身份验证器和验证器是否通过安全的独立通道进行通信。

评估
评估状态:
评估备注:
V2.7.5带外验证器仅保留认证码的哈希版本控制项
Authentication / 带外验证器

验证带外验证器只保留身份验证码的哈希版本。

评估
评估状态:
评估备注:
V2.7.6初始身份验证码由安全的随机数生成器生成,至少包含20位熵(通常一个六位数的随机数就足够了)控制项
Authentication / 带外验证器

验证初始认证码是否由安全的随机数生成器生成,至少包含20位熵(通常六位数字的随机数就足够)。

评估
评估状态:
评估备注:
V2.8.1基于时间的一次性密码在过期前具有固定的有效期控制项
Authentication / 一次性验证器

验证基于时间的一次性密码在过期之前是否有定义的有效期。

评估
评估状态:
评估备注:
V2.8.2用于验证提交的 OTP 的对称密钥受到高度保护,例如通过使用硬件安全模块或基于安全操作系统的密钥存储控制项
Authentication / 一次性验证器

验证用于验证提交的 OTP 的对称密钥是否得到高度保护,例如通过使用硬件安全模块或基于安全操作系统的密钥存储。

评估
评估状态:
评估备注:
V2.8.3在生成、初始化和验证一次性密码(OTP)时使用经过批准的加密算法控制项
Authentication / 一次性验证器

验证在 OTP 的生成、初始化和验证过程中使用的是经过批准的加密算法。

评估
评估状态:
评估备注:
V2.8.4基于时间的一次性密码在有效期内只能使用一次控制项
Authentication / 一次性验证器

验证基于时间的一次性密码在有效期内只能使用一次。

评估
评估状态:
评估备注:
V2.8.5如果在有效期内重复使用基于时间的多因素一次性密码(OTP)令牌,将会记录该行为,并拒绝访问,同时向设备持有人发送安全通知控制项
Authentication / 一次性验证器

验证如果在有效期内重复使用基于时间的多因素一次性密码(OTP)令牌,是否会被记录并拒绝,同时向设备持有者发送安全通知。

评估
评估状态:
评估备注:
V2.8.6验证物理单因素 OTP 生成器在被盗或遗失的情况下可以被撤销控制项
Authentication / 一次性验证器

验证实体单因素 OTP 生成器在被盗或丢失的情况下可以被撤销。确保撤销在所有登录会话中立即生效,无论位置如何。

评估
评估状态:
评估备注:
V2.8.7生物识别认证仅限于作为辅助因素使用,并需与您拥有的物品或您知道的信息结合使用控制项
Authentication / 一次性验证器

确保生物识别身份验证器仅限于作为二级因素使用,并需与您拥有的东西或您知道的东西结合使用。

评估
评估状态:
评估备注:
V2.9.1用于验证的加密密钥会被安全存储并防止泄露,例如使用受信平台模块(TPM)或硬件安全模块(HSM),或使用可以利用此安全存储的操作系统服务控制项
Authentication / 加密验证器

验证用于验证的加密密钥是否安全存储并受到防泄露保护,例如使用可信平台模块(TPM)或硬件安全模块(HSM),或使用可以利用此安全存储的操作系统服务。

评估
评估状态:
评估备注:
V2.9.2挑战随机数至少为64位长度,并且在统计上是唯一的或在加密设备的使用寿命内是唯一的控制项
Authentication / 加密验证器

验证挑战随机数至少为64位长度,并且在统计上是唯一的,或在加密设备的使用寿命内是唯一的。

评估
评估状态:
评估备注:
V2.9.3在生成、初始化和验证过程中使用经过批准的加密算法控制项
Authentication / 加密验证器

验证在生成、初始化和验证过程中使用了经过批准的密码算法。

评估
评估状态:
评估备注:
V2.10.1服务内部的机密不依赖于不变的凭证,如密码、API 密钥或具有特权访问权限的共享账户控制项
Authentication / 服务认证

确保服务内部的秘密不依赖于不变的凭证,例如密码、API 密钥或具有特权访问权限的共享账户。

评估
评估状态:
评估备注:
V2.10.2如果服务认证需要密码,则使用的服务账户不是默认凭据控制项
Authentication / 服务认证

请确保如果服务身份验证需要密码,所使用的服务账户不是默认凭据。(例如,在某些服务安装期间,root/root 或 admin/admin 是默认账户)。

评估
评估状态:
评估备注:
V2.10.3密码以足够的保护方式存储,以防止包括本地系统访问在内的离线恢复攻击控制项
Authentication / 服务认证

验证密码是否以足够的保护方式存储,以防止离线恢复攻击,包括本地系统访问。

评估
评估状态:
评估备注:
V2.10.4验证密码、与数据库和第三方系统的集成、种子和内部密钥以及 API 密钥是否安全管理,并且不包含在源代码中或存储在源代码仓库中控制项
Authentication / 服务认证

验证密码、与数据库和第三方系统的集成、种子和内部密钥,以及 API 密钥是否安全管理,并且不包含在源代码中或存储在源代码仓库中。这类存储应能够抵御离线攻击。建议使用安全的软件密钥存储(L1)、硬件 TPM 或 HSM(L3)来存储密码。

评估
评估状态:
评估备注: