摘要:在比較兩個字符串,無論它們是否相等,函數(shù)的時間消耗是恒定的,可以用來防止時序攻擊。
引言
最近,在 Hacker News 上有一篇帖子(https://news.ycombinator.com/item?id=9484757),提到了一種探測網(wǎng)站密碼加密方式的方法。
結(jié)果都是:
bool(true) bool(true) bool(true)如果在一個網(wǎng)站,使用240610708作為密碼,然后用QNKCDZO登陸,結(jié)果可以登錄的話,說明密碼是以MD5方式保存的。類似的,如果用aaroZmOk作為密碼,然后用aaK1STfY登陸,結(jié)果可以登錄的話,說明密碼是以sha1方式保存的。第三種當然就是明文存儲了。
分析以第一組數(shù)為例:
md5("240610708") 的結(jié)果是:0e462097431906509019562988736854 md5("QNKCDZO") 的結(jié)果是:0e830400451993494058024219903391由于 PHP 是弱類型語言,在使用 == 號時,如果比較一個數(shù)字和字符串或者比較涉及到數(shù)字內(nèi)容的字符串,則字符串會被轉(zhuǎn)換為數(shù)值并且比較按照數(shù)值來進行。此規(guī)則也適用于 switch 語句。上述例子中的兩個字符串恰好以 0e 的科學記數(shù)法開頭,字符串被隱式轉(zhuǎn)換為浮點數(shù),實際上也就等效于 0×10^0 ,因此比較起來是相等的。
類似第一個返回的是 true,第二個返回的是 false
結(jié)論PHP中的Hash校驗,應該使用“===”,而不應該使用“==”。另外如果生產(chǎn)環(huán)境版本足夠高的話(PHP >= 5.6.0),最好使用 hash_equals() 函數(shù)。
hash_equals() 在比較兩個字符串,無論它們是否相等,函數(shù)的時間消耗是恒定的,可以用來防止時序攻擊。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/30246.html
摘要:后端知識點總結(jié)服務器服務器的作用接收客戶端的請求,查找需要的數(shù)據(jù)文件數(shù)據(jù)庫其它系統(tǒng),發(fā)送回客戶端。注意默認情況下,若判定了某個相等條件則執(zhí)行該條件以及后續(xù)所有條件中的執(zhí)行語句必須配合關鍵字使用。 后端知識點總結(jié)——PHP 1.Web服務器 Web服務器的作用:接收客戶端(PC/PAD/PHONE)的請求,查找需要的數(shù)據(jù)(文件/數(shù)據(jù)庫/其它系統(tǒng)),發(fā)送回客戶端。 Web服務器分為兩種:...
摘要:后端知識點總結(jié)服務器服務器的作用接收客戶端的請求,查找需要的數(shù)據(jù)文件數(shù)據(jù)庫其它系統(tǒng),發(fā)送回客戶端。注意默認情況下,若判定了某個相等條件則執(zhí)行該條件以及后續(xù)所有條件中的執(zhí)行語句必須配合關鍵字使用。 后端知識點總結(jié)——PHP 1.Web服務器 Web服務器的作用:接收客戶端(PC/PAD/PHONE)的請求,查找需要的數(shù)據(jù)(文件/數(shù)據(jù)庫/其它系統(tǒng)),發(fā)送回客戶端。 Web服務器分為兩種:...
本篇文章主要是講述在JavaScript中判斷兩個值相等,不要認為很簡單,要注意的是在JavaScript中存在4種不同的相等邏輯。 ECMAScript 是 JavaScript 的語言規(guī)范,在ECMAScript 規(guī)范中存在四種相等算法,如下圖所示: 上圖中每個依次寫下來,很多前端應該熟悉嚴格相等和非嚴格相等,但對于同值零和同值卻不熟悉,現(xiàn)在就依次下面四種方法。 同值 同值零 非...
摘要:雖然你可能很驚訝甚至可能懷疑是的但是這都是有語言自己的一個隱式類型轉(zhuǎn)換的套路?;镜碾[式類型轉(zhuǎn)換基本類型的隱式轉(zhuǎn)換這個其實我們使用的最多例如結(jié)果返回的是而不是這就是類型的隱式轉(zhuǎn)換。 基本上所有的語言都有 隱式類型轉(zhuǎn)換 ,但是對于 弱類型語言(JS) 來說 ,隱式類型轉(zhuǎn)換會比 強類型語言(Java) 帶來更大的副作用,有些行為甚至是不可思議的。雖然你可能很驚訝 ,甚至可能懷疑是 JS 的...
閱讀 2908·2021-11-25 09:43
閱讀 1105·2021-10-11 10:57
閱讀 2558·2020-12-03 17:20
閱讀 3816·2019-08-30 14:05
閱讀 2507·2019-08-29 14:00
閱讀 2045·2019-08-29 12:37
閱讀 1740·2019-08-26 11:34
閱讀 3282·2019-08-26 10:27