Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Bezpieczny system logowania
Ikky
post 10.08.2009, 18:59:59
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

Ostrzeżenie: (0%)
-----


hej

o czym musze pamietac chcac napisac bardzo bezpieczny system logowania oparty o mysql ?
na razie przychodzi mi do głowy:

- md5 hasła
- ograniczenie do 5 prób na godzine
Go to the top of the page
+Quote Post
r4xz
post 10.08.2009, 19:01:55
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


http://us2.php.net/manual/en/function.htmlspecialchars.php


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 10.08.2009, 19:04:12
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Zacznijmy od tego:
zamiast md5 -> sha1

Nie wstawiaj zmiennych z formularzy do zapytań w żadnym wypadku! (bez wcześniejszej obróbki)
Określ, czego spodziewasz się np. ustalasz login to tylko literki a-zA-Z0-9 od 1 do 20 znaków i budujesz takie wyrażenie regularne.
Używasz mysql_real_escape_string

Najlepiej pisanie systemu logowania zacznij od napisania session handlera.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
kfc4
post 10.08.2009, 19:28:48
Post #4





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

Ostrzeżenie: (0%)
-----


Jak będziesz robił automatyczne logowanie to zapisujesz cookie httponly z jakimś haszem np. login + id + jakaś sól. Dalej zapisujesz ten hash do bazy + nazwa przeglądarki + system i porównujesz wszystko.
Go to the top of the page
+Quote Post
r4xz
post 10.08.2009, 19:56:04
Post #5





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


Cytat(kfc4 @ 10.08.2009, 20:28:48 ) *
Jak będziesz robił automatyczne logowanie to zapisujesz cookie httponly z jakimś haszem np. login + id + jakaś sól. Dalej zapisujesz ten hash do bazy + nazwa przeglądarki + system i porównujesz wszystko.


nawiązując do tematu i cytatu:


ta "(...)jakaś sól(...)" jest całkowicie zbędna. wystarczy zwykłe zapisanie hasła w md5 lub tego typu podobnym. po co zmyślać tam jakieś dziwadła, jeśli równie dobrze dana osoba może wejść na stronę, skorzystać z automatycznego logowania i tak wykraść dane? dlatego jest wybór automatycznego logowania, aby w miejscach publicznych tego unikać. nie bez powodu mówi się komputer osobisty/prywatny. (takie moje skromne zdanie smile.gif



--------------------
Go to the top of the page
+Quote Post
Ikky
post 10.08.2009, 20:06:18
Post #6





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

Ostrzeżenie: (0%)
-----


dzieki za pomoc to biore sie wlasnie za czytanie tongue.gif

a i heh napisałem w zendzie ( bo na tym frameworku bede tworzyl logowanie)
zrobilem prostą sesje która dodaje ++ przy kazdym wysłaniu formularza
i dałem 10 mozliwosci na godzine potem odpalilem inna przegladarke klapa tongue.gif
a potem po wpisaniu 10 niepoprawnych loginow dalem w firefoxie usun sesje i moglem znowu wpisywac:P
Go to the top of the page
+Quote Post
Fifi209
post 10.08.2009, 20:10:57
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(Ikky @ 10.08.2009, 20:06:18 ) *
a potem po wpisaniu 10 niepoprawnych loginow dalem w firefoxie usun sesje i moglem znowu wpisywac:P


Bo te dane o nieudanych logowaniach masz trzymać w bazie i "wiązać" po user_id


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Ikky
post 10.08.2009, 21:08:14
Post #8





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

Ostrzeżenie: (0%)
-----


a moze w ogole sobie odpuscic sesje?
i zrobic cos takiego:

po wpisaniu do formularza danych/ walidacji:

sprawdza czy istnieje user o wpisanym w formularzu loginie jesli tak i haslo jest poprawne to idziemy dalej
a jesli nie istnieje to logowanie jeszce raz
a jesli istnieje ale haslo jest niepoprawne to do kolumny powiedzmy user_login_counter dodaje sie 1

i wczesniej po sprawdzaniu czy user istnieje if jesli user_login_counter > 10 to die

i cos tam jeszce zrobie zeby sie co godzine to zerowało
Go to the top of the page
+Quote Post
Fifi209
post 10.08.2009, 21:31:47
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Jeżeli chcesz odpuścić sesje to nie wróżę nic dobrego - same kłopoty. Poczytaj do czego jest sesja.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Ikky
post 10.08.2009, 21:36:55
Post #10





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

Ostrzeżenie: (0%)
-----


tzn moze sie zle wyrazilem chce zrezygnowac z sesji tylko i wylacznie przy sprawdzaniu ile razy ktos juz sie probowal zalogowac
Go to the top of the page
+Quote Post
Fifi209
post 10.08.2009, 21:38:39
Post #11





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(Ikky @ 10.08.2009, 21:36:55 ) *
tzn moze sie zle wyrazilem chce zrezygnowac z sesji tylko i wylacznie przy sprawdzaniu ile razy ktos juz sie probowal zalogowac


Czemu? Przypisz użytkownika do sesji i tyle. ;d

Jeżeli sesja danego użytkownika istnieje to działasz dalej, jeżeli wygasła to usuwasz z bazy i tworzysz nową.

Ten post edytował fifi209 10.08.2009, 21:38:58


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
jmail
post 10.08.2009, 23:20:34
Post #12





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Ikky możesz zrezygnować z sesji jak Ci się chce, ale po to jest, żeby jej używać.

Generalnie nie zapomnij o zastąpieniu apostrofów podwójnymi przed wsadzeniem do zapytania bo bez tego masz sql injection jak w banku
Go to the top of the page
+Quote Post
Fifi209
post 10.08.2009, 23:22:37
Post #13





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(jmail @ 10.08.2009, 23:20:34 ) *
Ikky możesz zrezygnować z sesji jak Ci się chce, ale po to jest, żeby jej używać.

Jak wyobrażasz sobie dalsze akcje wykonywane po zalogowaniu?

Cytat(jmail @ 10.08.2009, 23:20:34 ) *
Generalnie nie zapomnij o zastąpieniu apostrofów podwójnymi przed wsadzeniem do zapytania bo bez tego masz sql injection jak w banku

Generalnie czy będzie apostrof czy cudzysłów i tak można zamknąć poprzez sqli więc nie gadaj głupot.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
jmail
post 10.08.2009, 23:54:10
Post #14





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Wyobrażam sobie działanie w oparciu o własne ClientScope.

A możesz mnie oświecić gdzie głupotę gadam?
Go to the top of the page
+Quote Post
gcdreak
post 11.08.2009, 06:51:07
Post #15





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

Ostrzeżenie: (0%)
-----


Dodatkowo przy rejstracji wproować wysyłanie maila z linkiem i ewentualnie captcha.
Go to the top of the page
+Quote Post
Ikky
post 11.08.2009, 07:37:51
Post #16





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

Ostrzeżenie: (0%)
-----


Cytat(gcdreak @ 11.08.2009, 07:51:07 ) *
Dodatkowo przy rejstracji wproować wysyłanie maila z linkiem i ewentualnie captcha.


rejestracji nie będzie
klient będzie w airze więc aplikacja dekstopowa którą jakoś też trzeba zdobyc tongue.gif
Go to the top of the page
+Quote Post
Fifi209
post 11.08.2009, 11:40:38
Post #17





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(jmail @ 10.08.2009, 23:54:10 ) *
A możesz mnie oświecić gdzie głupotę gadam?


Napisałem, czy apostrof czy cudzysłów i tak w trakcie ataku można go domknąć, że tak się wyrażę. Więc zmiana an cudzysłowy mu nic nie da bez użycia funkcji np. mysql_real_escape_string ja bym do tego regi dorzucił.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 00:33