Witam!
Robię skrypt logowania i wyszło mi takie coś:
<?php
if(isset($_POST['submit']))
{
$logowanie=mysql_query("SELECT * FROM users WHERE login='$_POST[login]' AND haslo='$_POST[haslo]'") or die(mysql_error());
$dane=mysql_fetch_array($logowanie)
if(mysql_num_rows($logowanie)>0)
{
$_SESSION['logged'] = 1;
$_SESSION['imie'] = "$dane[imie]";
$_SESSION['nazwisko'] = "$dane[nazwisko]";
$_SESSION['email'] = "$dane[email]";
$_SESSION['telefon'] = "$dane[telefon]";
echo '
Zostałeś zalogowany!';
}
else
echo '
Niepoprawna nazwa użytkownika lub hasło';
}
?>
| Login: | |
| Hasło: | |
| | |
[/code] Niestety wywala mi błąd: Parse error: syntax error, unexpected T_IF in C:\AppServ\www\OGLOSZENIA\logowanie.php on line 7 Dodam że jak usunę
[code]$dane=mysql_fetch_array($logowanie)
Wszystko jest OK, tzn. nie daję mi do sesji tego co chciałem.
Co zrobić żeby mi wszysto działało? Proszę o pomoc.
crew1
(L337 Crew)
#4
ad3. Wyobraź sobie co by się stało, gdyby ciąg wprowadzonych znaków w wartości pola, w które wpisuje się login , spowodował takie zapytanie:
SELECT * FROM users WHERE login=‘patryk_patrol’;
Uzyska uprawnienia admina, ponieważ wynik zapytania będzie pozytywny - login odpowiada głównemu adminowi i tyle
Podsumowując - sql injection.
Kolejna sprawa -> zatruwanie sesji.
$_SESSION[‘logged’] = 1;
O tym nie chce mi się pisać - wklep w google Session poisoning.
SELECT * FROM users WHERE login=‘ADMIN’ AND haslo='HASLO’
Tak wogle w panelu uzytkownika nie ma panelu admina.
pavobe
(Pavobe Reg)
#6
Nie szkodzi ;). Wystarczą dwa znaki, aby to obejść.