piątek, 1 lutego 2013

PHP - niebezpieczny operator porównania ==


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.