W PHP możemy porównać 2 zupełnie inne rzeczy, a PHP uzna, że to jest w porządku.
PHP i bezpieczeństwo :)
Za sprawą wpisu na blogu Gynvaela o operatorze równości w PHP stwierdzam, że PHP to bardzo dziwny język. Okazuje się, że możemy porównać 2 całkiem inne stringi (i nie tylko), a PHP uzna, że są one takie same.
Gynvael Coldwind podał bardzo prosty przykład, który aż musiałem obskryptować aby w niego uwierzyć :)
root@monitor:~# cat p.php
<?php
if("1234" == "\t\r\n 1234")
echo "takie same\n";
else
echo "nie takie same\n";
?>
root@monitor:~# php p.php
takie same
root@monitor:~#
Idąc za słowami Gynvaela, należy nie stosować operatora porównania w PHP w newralgicznych dla bezpieczeństwa miejscach chyba, że dokładnie wiecie co chcecie porównać.
Zapraszam do przeczytania całego wpisu Gynvaela na jego blogu.
Dobre :) Ciekawe jakie będą pierwsze wektory ataku :)
OdpowiedzUsuńA wiesz co to znaczy ===?
OdpowiedzUsuńTak Darku, tylko ile razy widziałeś w kodzie użycie === dla stringów, a ile razy == ? Ja dużo częściej widziałem ==.
Usuń