[php]Porządny skrypt do logowania na sesjach.

0

Poszukuję jakiegoś dobrego pomysłu na logowanie, czytam forum i czytam ale w każdym coś nie teges.
Znacie moze linki czy jakiś przykład do naprawde dobrego skryptu logowania?

0

Jaki język? ...

0
Glina napisał(a)

Znacie moze linki

tiny.pl/cwp9

0
Glina napisał(a)

Poszukuję jakiegoś dobrego pomysłu na logowanie, czytam forum i czytam ale w każdym coś nie teges.
Znacie moze linki czy jakiś przykład do naprawde dobrego skryptu logowania?

Php :)

0

Znałazłem coś takiego:
http://www.sprytne-programy.pl/index.php?name=PNphpBB2&file=viewtopic&t=4847&start=0&postdays=0&postorder=asc&highlight=

Po przetestowaniu i przeanalizowaniu wyglada w porzadku, co myslicie?
I czy do takiego logowania musimy robic zabezpieczenia typu sql injection ?

0

Eeeee... nic tam nie ma o sql, wiec...
Jak dla mnie wystarczy dolozenie md5 + baza danych + w przypadku np. mysql funkcji mysql_real_escape_string (na okolicznosc injection wlasnie) i powinno byc ok.

0
johny_bravo napisał(a)

Eeeee... nic tam nie ma o sql, wiec...

Ale user i haslo bedzie pobierane z bazy czyli bedzie sprawdzenie jakies tam typu select ..... a po drugie mozna sobie np zrobic wlasna funkcje filtrująca, zeby nie przepuszczal np znaków: ' " , ; * select update drop i cos tam jeszcze i jak ktos to wpisze to komunikat, mysle ze to powinno wystarczyc.

0

Od tego jest wlasnie mysql_real_escape_string, wiec po co kombinowac? Poza tym nie mozesz nie miec tych znakow - musisz je obslugiwac, tylko trzeba odpowiednio escapowac :)

0

A jeżeli w formularzu mam 2 pola user i pass i w bazie pole user i hashowane haslo i sprawdzam zgodnosc tak:

select * from users where user='$user' AND haslo=password('$pass');

To teraz gdyby nie dawac zabezpieczen sql injection , co wpisac w polu user zeby wejsc bez hasla?

0

Np. takie cus:
' or 1=1--
Chociaz nowe wersje php same escapuja apostrofy. Jak ostatnio testowalem kilka swoich stron na okolicznosc sql injection, to problemem byl TYLKO jeden apostrof (ten pierwszy wlasnie). Nie udalo mi sie wlamac na swoje stronki, ale ze dzieli mnie od sukcesu tylko jeden znak, to jakos nie umiem spac spokojnie.

Co do usuwania znakow - usuwac nie mozesz, bo jak np. wprowadzasz tresc strony, to zawartosc ma prawo zawierac je wszystkie (sredniki, apostrofy, itp). Z tego powodu zazwyczaj nie mozesz ich usuwac, tylko escapowac, glownie apostrofy.

0
johny_bravo napisał(a)

Co do usuwania znakow - usuwac nie mozesz, bo jak np. wprowadzasz tresc strony, to zawartosc ma prawo zawierac je wszystkie (sredniki, apostrofy, itp). Z tego powodu zazwyczaj nie mozesz ich usuwac, tylko escapowac, glownie apostrofy.

Ale ja mowie o usuwaniu tylko w polu user podczas logowania, ktos cos wpisuje i zanim dojdzie do sprawdzenia czy tez wykonania zapytania, funkcja w phpie posrpawdza mi czy nie ma apostrofow slowa drop , delete cudzyslowiow i wywali komunikat nie kombinuj tylko sie loguj :-)
przeciez pole user nie musi zawierac tych znakow, mozna ograniczyc zaden problem.
Czyli mozna zrobic funkcje ktora jak tylko napotka w polu user znaki: ;,' " () lub tez slowa select drop alter * zwraca blad logowania przed wykonaniem zapytania i tyle, zle rozwiazanie?

0

Mozna, tylko ze po co kombinowac jak juz masz odpowiednia funkcje. Poza tym niech sobie te znaki beda, byle tylko nie dzialaly nie tak jak trzeba - a do tego o ile wiem wystarczy escapowac apostrof. Niech mnie ktos poprawi, jesli sie myle.

0

Nikt Cie nie poprawi bo tu i tak tylko Ty odpowiadasz :-) no moze jeszcze z 2 osoby :-)

A jeszcze pytanko jak teraz ustawic czas zycia sesji ? Czyli gosc sie loguje i np chcemy mu dac tylko 5 min bezczynnosci ? Po 5 minutach sesja wygasa i trzeba znowu sie logowac.

0

Ktos juz chyba odpowiadal ostatnio na to pytanie, nie pamietam czy Tobie. Zapisuj sobie ostatni czas akcji uzytkownika (chocby i w sesji, ale lepiej w bazie) i sprawdzaj przy kazdej akcji, czy nie minelo 5 minut od ostatniego. Przez 'akcja' rozumiem zaladowanie jakiejkolwiek strony serwisu.

0
johny_bravo napisał(a)

Ktos juz chyba odpowiadal ostatnio na to pytanie, nie pamietam czy Tobie. Zapisuj sobie ostatni czas akcji uzytkownika (chocby i w sesji, ale lepiej w bazie) i sprawdzaj przy kazdej akcji, czy nie minelo 5 minut od ostatniego. Przez 'akcja' rozumiem zaladowanie jakiejkolwiek strony serwisu.

W sumie racja , a jak minelo 5 min to wywoluje session_destroy() tak ?

P.S.
Tak ktos wlasnie mi odpowiadał kurcze :)

0

Nie musisz niszczyc sesji. Wystarczy np. tak

Zalogowany oznacza

$_SESSION['userLogged'] = 1;

Wylogowanie oznacza

unset($_SESSION['userLogged'])

czy zalogowany

  return isset($_SESSION['userLogged']);
0

Dzieki bardzo za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1