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.

3 komentarze:

  1. Dobre :) Ciekawe jakie będą pierwsze wektory ataku :)

    OdpowiedzUsuń
  2. Odpowiedzi
    1. 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ń

Proszę zostaw swój komentarz w celu dopowiedzenia tego czego ja nie wiedziałem lub wywołania ciekawej dyskusji. Wprowadziłem moderowanie komentarzy ze względu na dużą popularność bloga wśród różnych SEO botów :)