[英]How do the timing attacks works and why Symfony's string utils suggest a precise order in passing strings to compare
為了將哈希密碼與用戶提供的密碼進行比較,Symfony提供了util StringUtil
。
該文檔討論了“定時攻擊”:攻擊者可能會擁有有關密碼復雜性的有用信息,觀察網站將提供的密碼與其存儲的密碼進行比較所需的時間。
該文件還說
為避免定時攻擊,已知字符串必須是第一個參數,而用戶輸入的字符串必須是第二個參數。
為什么順序很重要?
基於StringUtils
的當前版本 ,實際上並不重要。 重要的是正確的順序,例如password_verify()
。
該文檔可能引用的是StringUtils
的2014年及更早版本 ,該版本試圖避免泄漏字符串長度。 在討論如何針對mbstring.func_overload配置加強此類的過程中 ,確定泄漏長度是不可避免的,字符串長度通常是公共的(即,對於MAC),通常最好集中精力阻止有用信息的泄漏。
在那種情況下,順序曾經很重要,但現在實際上不再重要了。
我將其稱為過時的文檔問題。 我在symfony-docs中打了一個勾號以進行更正。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.