百度安全实验室:支付安全不能说的那些事儿

百度安全实验室:支付安全不能说的那些事儿 | 雷锋网

如果某一个参数值(value)中包含&和=符号,待签字符串和原始的参数集合就可能不再是一对一,即存在多组参数集合对应同一组待签字符串。

例如:
参数集合

{"key1":"value1","key2":"value2&key3=fake_value&zend_key=a", "key3":"value3"}

的待签字符串为
key1=value1&key2=value2&key3=fake_value&zend_key=a&key3=value3

考虑另一个参数集合

{"key1":"value1","key2":"value2", "key3":"fake_value","zend_key":"a&key3=value3"}

的待签字符串同为
key1=value1&key2=value2&key3=fake_value&zend_key=a&key3=value3

两组集合的待签字符串一样,但key3的值不同。攻击者若知道其中一组的签名,便知道另一组参数在相同密钥下的签名了。

Show Comments