Provate ad eseguire questo codice:
<?php var_dump(md5('240610708') == md5('QNKCDZO'));
var_dump(md5('aabg7XSs') == md5('aabC9RqS'));
var_dump(sha1('aaroZmOk') == sha1('aaK1STfY'));
var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m'));
var_dump('0010e2' == '1e3');
var_dump('0x1234Ab' == '1193131');
var_dump('0xABCdef' == ' 0xABCdef');
In PHP l’operatore ==
è molto pericoloso in certi contesti, specialmente quello di sicurezza, in cui non si desidera che l’interprete del linguaggio faccia quello che il manuale definisce “type juggling”.
E’ vero: trovare una collisione di due hash che iniziano per 0e
e contengono solamente cifre decimali non è facile, ma non è nemmeno impossibile perché ci sono 1038 hash SHA1 che contengono 0e
seguito solamente da cifre decimali.
Forse è meglio utilizzare ===
e ricordare che lo strong typing è palloso per il 97% delle volte, ma per quel 3%…
Lascia un commento