计时攻击是如何工作的以及为什么 Symfony 的字符串实用程序建议在传递字符串时采用精确的顺序进行比较
How do the timing attacks works and why Symfony's string utils suggest a precise order in passing strings to compare
要将哈希密码与用户提供的密码进行比较,可以使用 Symfony 提供的实用程序 StringUtil
。
文档谈到 "timing attacks":攻击者可能会获得有关密码复杂性的有用信息,观察网站将提供的密码与其存储的密码进行比较所需的时间。
那个documentation says还有那个
To avoid timing attacks, the known string must be the first argument
and the user-entered string the second.
为什么顺序很重要?
基于the current version of StringUtils
,其实无所谓。重要的是正确的顺序,例如password_verify()
。
文档很可能指的是 2014 and earlier version of StringUtils
, which tried to avoid leaking the string length. During the discussion to harden this class against mbstring.func_overload configuration,因此决定泄漏长度是不可避免的,字符串长度通常为 public(即对于 MAC),并且它是通常最好专注于阻止有用信息的泄漏。
在那种情况下,顺序曾经很重要,但现在真的不重要了。
我称之为过时的文档问题。我opened a ticked in symfony-docs更正一下
要将哈希密码与用户提供的密码进行比较,可以使用 Symfony 提供的实用程序 StringUtil
。
文档谈到 "timing attacks":攻击者可能会获得有关密码复杂性的有用信息,观察网站将提供的密码与其存储的密码进行比较所需的时间。
那个documentation says还有那个
To avoid timing attacks, the known string must be the first argument and the user-entered string the second.
为什么顺序很重要?
基于the current version of StringUtils
,其实无所谓。重要的是正确的顺序,例如password_verify()
。
文档很可能指的是 2014 and earlier version of StringUtils
, which tried to avoid leaking the string length. During the discussion to harden this class against mbstring.func_overload configuration,因此决定泄漏长度是不可避免的,字符串长度通常为 public(即对于 MAC),并且它是通常最好专注于阻止有用信息的泄漏。
在那种情况下,顺序曾经很重要,但现在真的不重要了。
我称之为过时的文档问题。我opened a ticked in symfony-docs更正一下