求适配AAD B2C安卓平台SHA1 base64签名哈希的有效正则表达式
Azure AAD B2C 安卓签名哈希校验正则
问题排查
你现有正则的漏洞主要有两处:
- 未考虑SHA1哈希base64编码的固定结构:20字节的SHA1值经过标准base64编码后,总长度固定为28位,末尾仅会出现1个
=,不可能出现2个=的情况,原有正则兼容了两种后缀规则,过度放宽了校验范围 - 仅做了长度预查,没有强制末尾必须为
=,导致platformAndroidSignatureHash这类刚好28位、且所有字符都落在base64允许字符范围内的无后缀字符串被误判为合法
正确正则
标准base64版本(适配Azure AAD B2C官方要求)
^(?:[A-Za-z0-9+/]{4}){6}[A-Za-z0-9+/]{3}=$
兼容URL安全base64版本(可选,针对自定义转码场景)
^(?:[A-Za-z0-9+/\-_]{4}){6}[A-Za-z0-9+/\-_]{3}=$
校验逻辑说明
- 强制base64编码以4字符为一组的规则,前6组共24位为标准base64合法字符
- 最后一组固定为3位合法字符+1位
=后缀,总长度刚好28位,完全匹配20字节SHA1的base64编码结果 - 自动过滤无
=后缀、双=后缀的无效内容
内容的提问来源于stack exchange,提问作者freak_geek
相关产品推荐
相关产品推荐

