• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[PHP] System logowania __ zabezpieczenia

VPS Starter Arubacloud
0 głosów
1,437 wizyt
pytanie zadane 23 września 2015 w PHP przez WWOTEX Mądrala (6,200 p.)
Cześć,
Jak powinienem zabezpieczyć mój system logowania tak by był on jak najbardziej bezpieczny. Póki co nie mam skomplikowanej ochrony, zmienne loginu i hasła są przeprowadzane przez htmlentities i real_escape_string, poza tym jest też dynamicznie generowany token zakodowany jednorazowo md5. Hasła w bazie są szyfrowane po prostu md5. Jeszcze dodałem opóźnienia dla użytkowników, którzy się pomylili parę razy, przy czym gdy ktoś się pomyli podajżę 20 raz z rzędu to kolejną próbę może przeprowadzić za rok. (tych użytkowników sprawdzam przez IP a jeśli z jakiegoś powodu nie mogę sprawdzić IP to w ogóle nie udostępniam formularza logowania) Czy jest coś co mogę jeszcze zrobić by było bezpieczniej? Albo może inaczej, w jaki sposób nadal możnaby się włamać na stronę?
Jeżeli chodzi o system rejestracji to póki co nie był mi potrzebny więc nawet nie pisałem, ale także proszę o rady zabezpieczeniowe do tego systemu.

4 odpowiedzi

+2 głosów
odpowiedź 23 września 2015 przez Comandeer Guru (599,730 p.)

Do hashowania haseł jest password_hash → tyle w temacie.

Do wstawiania danych do bazy używa się prepared statements

Co do bana na rok: no bez przesady. Raczej 5 prób → ban na godzinę. Na dłużej nie ma sensu, zwłaszcza, że zmiana IP dzisiaj to banalna sprawa.

Nieudostępnianie formularza użytkownikom, którym nie możesz sprawdzić IP… Cóż, to jest tak dziwne, że aż nie wiem co powiedzieć ;)

komentarz 23 września 2015 przez rafal.budzis Szeryf (85,260 p.)
Może i stosowało się w 2000 roku ale jeśli strona nie będzie podatna na SQL Injection to mało prawdopodobne zeby md5 ktoś poznał. A jak bedą luki pozwalające na wstrzykiwanie SQLa to nawet najlepsze metody hashowania nie pomogą bo ktoś wstrzyknie update z swoim hashem. Z resztą nigdzie nie napisałem ze powinien korzystać z md5 a już poszedł na mnie hejt ...
komentarz 23 września 2015 przez event15 Szeryf (93,790 p.)
Oczywiście że się mylisz. Jeśli hashe mają salt z elementem losowości czy timestampem to nie podrobisz takiego bo nie wiesz jak jest zbudowany.
komentarz 23 września 2015 przez Comandeer Guru (599,730 p.)

Z resztą nigdzie nie napisałem ze powinien korzystać z md5 a już poszedł na mnie hejt ...

 htmlentities i real_escape_string do hasła nie są potrzebne jeśli robisz md5

 Tak to odebrałem.

No i zawsze oprócz SQLi są choćby exploity pod konkretne wersje DB.

komentarz 23 września 2015 przez rafal.budzis Szeryf (85,260 p.)

event15  tworzysz swoje konto na atakowanej stronie i zmieniasz wartości wybranego użytkownika na te które stworzył ci system w twoim koncie. Dalej hash cię nie ratuje. Jeśli pozwalasz na wstrzykiwanie SQLa przegrałeś.

komentarz 23 września 2015 przez rafal.budzis Szeryf (85,260 p.)

ok powinno być 

"htmlentities i real_escape_string do hasła nie są potrzebne jeśli wykonujesz na nim funkcje hashujące"

Napisałem md5 bo był uzyty w pytaniu moja wina

komentarz 23 września 2015 przez Comandeer Guru (599,730 p.)
Żeby to zrobić najpierw musisz poznać strukturę bazy - więc musisz sobie ją odpytać. A blind SQL attack lubi zabrać ciut czasu bez automatyzacji ;)

Poza tym: jak stworzysz taki hash? Przecież masz jedynie hasło - nie masz jego hasha.
komentarz 23 września 2015 przez Comandeer Guru (599,730 p.)

Co do przekazywania danych bazie: prepared statements. I tyle. Nie ma sensu bawić się w ręczny escape.

No i dasz se rękę uciąć, że jakiś algorytm hashowania nie zwróci Ci outputu z ' i --? ;) Dobra rada: cokolwiek wsadzasz do zapytania, zrób to jako prepared statement.

+1 głos
odpowiedź 23 września 2015 przez rafal.budzis Szeryf (85,260 p.)

htmlentities i real_escape_string do hasła nie są potrzebne jeśli robisz md5

Powinieneś dodać jeszcze funkcje addslashes aby ustrzec się przed atakami typy SQL Injection

Ban na rok jest chorym i przesadzonym pomysłem.

Polecam ten kursik w kilkunastu filmach https://www.youtube.com/playlist?list=PL2F887FD41D65DFC1​

komentarz 23 września 2015 przez event15 Szeryf (93,790 p.)

htmlentities i real_escape_string do hasła nie są potrzebne jeśli robisz md5

broken heart

 Ja polecam pooglądanie OWSAP. Znajdziesz wszystkie techniki obrony przed większością (znaczy przed wszystkimi znanymi) ataków. 

komentarz 23 września 2015 przez Comandeer Guru (599,730 p.)
O panie, MD5 to się stosowało w 2000 roku. Obecnie PBKDF2 lub bcrypt, a dla paranoików: scrypt.
komentarz 23 września 2015 przez event15 Szeryf (93,790 p.)
Dodać wymuszanie HTTPS wszędzie i bedzie OK ^^
komentarz 23 września 2015 przez Boshi VIP (100,240 p.)
Zwłaszcza, że rozkodowanie dzisiaj  md5 to   kilkanaście-kilkadziesiąt sekund.
komentarz 23 września 2015 przez Comandeer Guru (599,730 p.)
@Boshi kilkadziesiąt? To znaczy, że a) masz słabe GPU b) nie masz SSD c) ściągnąłeś złe tablice tęczowe ;)

@event15 to podstawa bezpieczeństwa w Sieci.
komentarz 23 września 2015 przez Boshi VIP (100,240 p.)
sqlmap,  to jest chyba słownik zdaje się. Nie bawiłem się w  Rainbow tables nigdy, więc ciężko mi ocenić :)
+1 głos
odpowiedź 24 września 2015 przez Ehlert Ekspert (212,630 p.)

Proponuję ogarnać temat Session Hijackicng.

0 głosów
odpowiedź 24 września 2015 przez event15 Szeryf (93,790 p.)
Mówiłem o OWASP, ale jakby komuś się nie chciało:

https://www.owasp.org/images/9/9a/OWASP_Cheatsheets_Book.pdf
komentarz 24 września 2015 przez event15 Szeryf (93,790 p.)

Podobne pytania

0 głosów
2 odpowiedzi 653 wizyt
pytanie zadane 25 listopada 2018 w PHP przez niezalogowany
0 głosów
1 odpowiedź 640 wizyt
pytanie zadane 18 maja 2017 w PHP przez bezmózg Nowicjusz (120 p.)
–4 głosów
1 odpowiedź 715 wizyt
pytanie zadane 21 października 2016 w PHP przez Warzywo Gaming Początkujący (320 p.)

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...