System logowania opary o MySQL |
System logowania opary o MySQL |
6.01.2009, 17:00:48
Post
#1
|
|
Grupa: Zarejestrowani Postów: 339 Pomógł: 12 Dołączył: 22.11.2008 Ostrzeżenie: (20%) |
cześć:)
Chciałbym napisać system logowania oparty o mysql i sesje. Chciałbym się dowiedzieć na co muszę zwrócić uwagę podczas pisania takowego skryptu aby dany system był jak najbezpieczniejszy. Moja teoria napisania skryptu: *login.php - Sprawdza czy zostały przesłane dane (login i hasło). Jeśli tak: łączy się z bazą, wyciąga hasło z tabeli users gdzie login jest taki jak ten z POSTu. Jeśli wszystko się zgadza daję do sesji zmienną zalogowany, następnie przekierowuję na index.php (zabezpieczony przed wejściem bez sesji zalogowany). Jeśli nie są przesłane login i hasło pokazuje formularz z hasłem i loginem. *logout.php - Niszczę sesję zalogowany i przekierowuję na index.php *index.php - Sprawdzam czy jest sesja zalogowany jeśli tak - wyświetlam zawartość (u mnie będzie to system newsów) jeśli nie pokazuję link zaloguj i inne szczegóły strony. Wszystko dobrze?? Teraz jakich funkcji i gdzie ich użyć aby mój skrypt byłbezpieczny |
|
|
6.01.2009, 17:03:36
Post
#2
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 8 Dołączył: 21.11.2008 Ostrzeżenie: (0%) |
moze to poczytaj
Temat: Bezpieczenstwo_skryptow_PHP Temat: SQL_Injection_Insertion Temat: podwojne_hashowanie_hasel -------------------- eArena.pl - hosting serwerów gier multiplayer
|
|
|
6.01.2009, 17:46:09
Post
#3
|
|
Grupa: Zarejestrowani Postów: 339 Pomógł: 12 Dołączył: 22.11.2008 Ostrzeżenie: (20%) |
Dzięki Zaraz coś naskrobię to dam na forum, żebyście powiedzieli co jest źle
napotkałem na dylemat: chcę zarejestrować sesję ale w maualu jest napisane, że:
I teraz czego mam użyć ?? Znaczy $_SESSION['zalogowany']; czy session_register("zalogowany"); |
|
|
6.01.2009, 18:06:09
Post
#4
|
|
Grupa: Zarejestrowani Postów: 910 Pomógł: 44 Dołączył: 20.02.2008 Skąd: Łódź Ostrzeżenie: (20%) |
użyj poprostu sesji
Rozpoczecie sesji musi być na samym początku kodu. Nie może być przed tym nawet spacji. Potem dodajesz sobie do tablicy $_SESSION odpowiednie dane jakie chcesz i działasz dalej. |
|
|
6.01.2009, 18:22:25
Post
#5
|
|
Grupa: Zarejestrowani Postów: 339 Pomógł: 12 Dołączył: 22.11.2008 Ostrzeżenie: (20%) |
Teraz proszę o ocenę tego systemu. Chodzi mi o bezpieczeństwo
http://strarus.cba.pl/testy/login.php Jeśli coś jest źle, to proszę także napisać co muszę zrobić aby to naprawić. aha: login: test hasło: pass Ten post edytował Strarus 6.01.2009, 18:22:55 |
|
|
6.01.2009, 18:30:52
Post
#6
|
|
Grupa: Zarejestrowani Postów: 910 Pomógł: 44 Dołączył: 20.02.2008 Skąd: Łódź Ostrzeżenie: (20%) |
Jak na 1 rzut okiem jest ok. Daj kod to zobaczymy czy w kodzie nie ma jakiś luk.
|
|
|
6.01.2009, 18:34:24
Post
#7
|
|
Grupa: Zarejestrowani Postów: 339 Pomógł: 12 Dołączył: 22.11.2008 Ostrzeżenie: (20%) |
login.php
main.php
logout.php
I jeszcze plik db_connect.inc.php ale jego chyba nie trzeba |
|
|
6.01.2009, 18:51:56
Post
#8
|
|
Grupa: Zarejestrowani Postów: 910 Pomógł: 44 Dołączył: 20.02.2008 Skąd: Łódź Ostrzeżenie: (20%) |
Proponuje Ci zrobić takie zapytanie
To zapytanie sprawdza czy w bazie jest rekord gdzie login = login a haslo = haslo i zwraca rekord. Możesz sobie zabezpieczyć dodatkowo przed atakiem dodając:
i przy zmianie nazwy zmiennych posta dodać funkcję jeszcze addslashes(); Jak na mój gust logowanie będzie dosyć bezpieczne i funkcjonalne. Ja tak robię zawsze i działa wszystko |
|
|
6.01.2009, 19:05:06
Post
#9
|
|
Grupa: Zarejestrowani Postów: 339 Pomógł: 12 Dołączył: 22.11.2008 Ostrzeżenie: (20%) |
Dzięki wielkie A na jaki typ ataku był podatny mój skrypt? W jaki sposób można było przeprowadzić atak? Sprawdzałem tylko
Kod 'or 1=1 i % ale nie działały.
|
|
|
6.01.2009, 19:13:32
Post
#10
|
|
Grupa: Zarejestrowani Postów: 910 Pomógł: 44 Dołączył: 20.02.2008 Skąd: Łódź Ostrzeżenie: (20%) |
na SQL inject. % działają jeżeli w zapytaniu mamy LIKE. Jest to stosowane do wyszukiwarek. A i jeszcze jedno. Koduj sobie hasła w md5(); Jest mniejsze ryzyko włamania się na czyjeś konto.
|
|
|
6.01.2009, 19:22:46
Post
#11
|
|
Grupa: Zarejestrowani Postów: 339 Pomógł: 12 Dołączył: 22.11.2008 Ostrzeżenie: (20%) |
Nadal nie działa
. Jak wpisuje poprawne dane to i tak pokazuje złe hasło...I jeszcze pytanie: czy mogę dać w sesji np. $_SESSION["zalogowany"] = $row['login']; aby móc potem weryfikować z sesji nazwę użytkownika przy zmianie hasła? Ten post edytował Strarus 6.01.2009, 19:39:41 |
|
|
6.01.2009, 20:12:04
Post
#12
|
|
Grupa: Zarejestrowani Postów: 910 Pomógł: 44 Dołączył: 20.02.2008 Skąd: Łódź Ostrzeżenie: (20%) |
Usuń spację w `login` = '".$login."'
Daj pod $row = mysql_fetch_row($dane); print_r($row); i daj to co ci wyprintuje Możesz tak zrobić, ale lepiej będzie jak zrobisz $_SESSION['login'] = $login; oprócz $_SESSION['zalogowany'] = true; |
|
|
7.01.2009, 08:23:22
Post
#13
|
|
Grupa: Zarejestrowani Postów: 339 Pomógł: 12 Dołączył: 22.11.2008 Ostrzeżenie: (20%) |
daje mi wtedy
Kod Array ( [0] => test [1] => pass ) Złe hasło! ... I nadal nie działa... może powrócę do starej wersji??
|
|
|
7.01.2009, 16:31:48
Post
#14
|
|
Grupa: Zarejestrowani Postów: 910 Pomógł: 44 Dołączył: 20.02.2008 Skąd: Łódź Ostrzeżenie: (20%) |
wyprintuj taki sposobem tablice $_POST i porównaj dane.
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 11:30 |