Modyfikacja warunku if coś a'la "SQL Injection".

Gr0sz

Użytkownik
Dołączył
Luty 18, 2007
Posty
4
Witam!
Mam taki warunek sprawdzający użytkownika i hasło:
if ($_POST['login'] == $rekord['login'] && $rekord['pass'] == $_POST['pass'])
{
instrukcje
}
else
{
echo "Zła nazwa użytkownika lub hasło.";
}
Dlaczego jeżeli zmienna $_POST['pass'] ma wartość "xxx or 1==1" dalej jest wyświetlany błąd użytkownika lub hasło?
Z góry dziękuję za odpowiedzi.
Pozdrawiam!
 

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
$_POST['login'] = "JackieChan or 1==1";
$rekord['login'] = "JackieChan";
PHP:
if($_POST['login'] == $rekord['login']) echo "ok";
else echo ":(";
inaczej:
PHP:
if("JackieChan or 1==1" == "JackieChan") echo "ok";
else echo ":(";
 

Gr0sz

Użytkownik
Dołączył
Luty 18, 2007
Posty
4
Wydaję mi się, że się mylisz.
//Racja, wydaje Ci się. Najwyraźniej nie rozumiesz co napisał discovery44 - hxv
W każdym razie nie ma takiej możliwości. Na innym forum otrzymałem taką odpowiedź:
"(...) SQL Injection dotyczy zapytań do bazy danych gdzie mamy do czynienia z podstawianiem zmiennych do stringa, w normalnych warunkach PHP wszystko jest na sztywno."

Pozdrawiam!
 
Ostatnio edytowane przez moderatora:

D.F.

Były Moderator
Dołączył
Listopad 4, 2009
Posty
493
discovery44 napisał, że to jest porównanie dwóch różnych ciągów znaków i dlatego wyjdzie wartość fałsz.
 

cyber_pl

Użytkownik
Dołączył
Wrzesień 30, 2009
Posty
187

hxv

Były Moderator
Dołączył
Sierpień 9, 2006
Posty
797
cyber_pl, nie rozumiem gdzie widzisz problem - w pierwszym przykładzie podał normalny kod, w drugim dla zobrazowania podstawił za zmienne ich przykładowe wartości. Na moje oko wszystko jest OK.
 

cyber_pl

Użytkownik
Dołączył
Wrzesień 30, 2009
Posty
187
z zasobu ktory podalem jasno mozna wyczytyac ze:

Always remember, when comparing strings, you should use '===' operator (strict comparison) and NOT '==' operator (loose comparison).
 
Ostatnia edycja:
Do góry Bottom