CNVD登录按钮无效问题排查
CNVD登录按钮无效问题排查
在登录CNVD时发现点击登录按钮无效,而更换另一个账号则可以正常登录。
经过测试,发现密码长度大于等于16就不能正常登录。
通过以上截图中的代码可以知道CNVD使用了jQuery Validate对表单的输入内容进行了校验。密码长度超过40就不能登录了。而我的密码长度为16,应该是没问题的。
继续检查HTML源码,发现开发者可能弄错了jQuery Validate校验的字段,jQuery Validate 校验的是name,而不是id,password实际上是密码经过AES加密后的密文。
CNVD的密码加密方式为AES-256,是一种块加密算法,一个块16字节。正常情况下16字节加密后的密文也是16字节,16字节进行base64编码是24( math.ceil(16/3.0)*4 )字节,不会超过长度40。 而此处CryptoJS使用了Pkcs7 Padding,当明文长度为16的倍数时候,会在后边添加16个0x10进行对齐,我们可以理解为明文的字节数实际为32字节,密文长度也为32字节,base64编码后为44( math.ceil(32/3.0)*4 )字节,超过了44字节。


最后吐槽一下,既然都把密码加密了,为啥还要传明文密码到服务器?