Skrypt logowania i sesje


(Patrol) #1

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.


(L337 Crew) #2
  1. Umieść session_start(); gdzieś na początku;

  2. Dziwisz się, że wszystko jest ok, jak wywalisz tę linię? Nie zakończyłeś jej średnikiem...

  3. Jesteś niezwykle odważny :wink:


(Patrol) #3
  1. Umieść session_start(); gdzieś na początku; = Sesje są na początku.

  2. Dziwisz się, że wszystko jest ok, jak wywalisz tę linię? Nie zakończyłeś jej średnikiem... = OK

  3. Jesteś niezwykle odważny = NIBY CZEMU?


(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 :wink:

Podsumowując - sql injection.

Kolejna sprawa -> zatruwanie sesji.

$_SESSION['logged'] = 1;

O tym nie chce mi się pisać - wklep w google Session poisoning.


(Patrol) #5

SELECT * FROM users WHERE login='ADMIN' AND haslo='HASLO'

Tak wogle w panelu uzytkownika nie ma panelu admina.


(Pavobe Reg) #6

Nie szkodzi :wink:. Wystarczą dwa znaki, aby to obejść.


(Patrol) #7

To daj przykład.


(Airborn) #8

google nie gryzie


(Patrol) #9

Jak to naprawić?