Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Bezpieczny skrypt logowania
-Gość-
post
Post #1





Goście







Czy logowanie zaimplementowane w ten sposób:

  1. $login = $_REQUEST[ 'login' ] ;
  2. $password = $_REQUEST[ 'password' ] ;
  3.  
  4. if ( $login == "Admin" && sha1( $password ) == "799aaee3f11318ec2803cdd4d7260076ac6a5f95" ) {
  5. $_SESSION[ 'zalogowano' ] = 'yes';
  6. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  7. }
  8.  
  9. if($_SESSION['ip'] != $_SERVER['REMOTE_ADDR'])
  10. {
  11. die('Proba przejecia sesji udaremniona!');
  12. }


można uznać za bezpieczne?

Czego tu jeszcze brakuje lub co zrobiłem źle?
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 29)
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


To zalezy co kto rozumie przez bezpieczne.
Na pewno można to zrobić lepiej.

1. Dodać sół.
2. Uzyć bardziej zasobożernego algorytmu hashującego.
3. Korzystanie z natywnycj sesji nie jest nalepszym pomysłem. Istnieje kilka dobrych bibliotek implementujących mechamizm sesji przy użyciu cookie i bazy danych.
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







1. Co to jest sół? (IMG:style_emoticons/default/smile.gif)
2. Np. jakiego?
3. Jaką bibliotekę mógłbyś polecić?
Go to the top of the page
+Quote Post
Niktoś
post
Post #4





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


1.Unikalny token doklejany do każdego zahashowanego stringa.
2.Np. Sha 512
3.Można zapisywać sesje w jakiejś niedostępnej przestrzeni dyskowej (server mode), lub w bazie danych(sql mode).Implementacje znajdziesz na www.google.pl.

Nie korzystaj z soli wystarczy użyć sha256-jeśli już ma być super bezpieczne to skorzystaj z sha 512.

Ten post edytował Niktoś 1.08.2012, 12:13:56
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #5





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


1. Sól to dodatowy ciąg znaków dopisywany do hasła przed hashowaniem. To utrudnia tworzenie tęczowych tablic i uniemożliwa korzystanie z już istniejących. Innymi słowy odpada jedyna sensowna forma ataku na złamanie hasha. Koniecznie używaj soli.
2. Nie wiem jakiego :-] Spytaj tutaj: Temat: Ciag zaburzajacy w haslach osobny czy wspolny
3. http://codeigniter.com/user_guide/libraries/sessions.html
Go to the top of the page
+Quote Post
Niktoś
post
Post #6





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Tablice tęczowe na 32 bitowy(Sha256) lub 64 bitowy(Sha512) ciąg znaków-no życzę powodzenia.

Sole raczej stosuje się przy prostych algorytmach hashujących jak md5 lub sha1.

Ten post edytował Niktoś 1.08.2012, 12:41:45
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #7





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(Niktoś @ 1.08.2012, 13:38:51 ) *
Tablice tęczowe na 32 bitowy(Sha256) lub 64 bitowy(Sha512) ciąg znaków-no życzę powodzenia.

Do tęczowej tablicy zapisujesz tylko częśc np. pierwsze 32 bity.
W drugiej rundzie kodujesz każde znalezione powtórzenie aby ustalić które z nich jest prawidłowe... Mozliwe że żadne.
Ja tak robie i jest OK. Myślenie nie boli.

Ten post edytował wNogachSpisz 1.08.2012, 21:09:25
Go to the top of the page
+Quote Post
Niktoś
post
Post #8





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Popatrz jak generowany jest ciąg znaków dla Sha256 i dla 512:
http://pl.wikipedia.org/wiki/SHA-2
W przypadku md5 lub sha1 aby wygenerować taki ciąg znaków musisz użyć soli-więc po co używać ich w przypadku silnych algorytmów-no chyba żeby utrudnić sobie życie.

Ten post edytował Niktoś 1.08.2012, 12:53:43
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #9





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(Niktoś @ 1.08.2012, 13:53:27 ) *
Popatrz jak generowany jest ciąg znaków dla Sha256 i dla 512:
http://pl.wikipedia.org/wiki/SHA-2
W przypadku md5 lub sha1 aby wygenerować taki ciąg znaków musisz użyć soli-więc po co używać ich w przypadku silnych algorytmów-no chyba żeby utrudnić sobie życie.

Na prawde nie kumam. Nie ma różnicy między md5 a sha512 z perspektywy ataku tęczowych tablic. No chyba że czas generowania. Sól jest w obu przypkadkach dokładnie tak samo niezbędna.
Go to the top of the page
+Quote Post
-Gość-
post
Post #10





Goście







Cytat(wNogachSpisz @ 1.08.2012, 11:26:21 ) *
3. Korzystanie z natywnycj sesji nie jest nalepszym pomysłem.


Dlaczego?
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #11





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


1. Wspólny katalog na pliki tymczasowe w prawie każdym low-end'owym współdzielonym hostingu (w tej sytuacji przejęcie sesji to banał).
2. Bujna historia BUGów natywnego mechanizmu sesji w PHP.
Go to the top of the page
+Quote Post
Niktoś
post
Post #12





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
Na prawde nie kumam. Nie ma różnicy między md5 a sha512 z perspektywy ataku tęczowych tablic. No chyba że czas generowania. Sól jest w obu przypkadkach dokładnie tak samo niezbędna.


Nie twierdzę ,że nie jest możliwe wygenerować tablicę tęczową dla silniejszych algorytmów hashujących, ale potrzebna by była bardzo duża moc obliczeniowa, czyli generowanie tak długiego ciągu za pomocą tablic tęczowych musiałaby być przeprowadzana przez kilka-kilkanaście komputerów.Proces tworzenia takiej tablicy przeprowadzany by musiał być przez grupę hakerów, a i to w przypadku Sha-512 byłoby naprawdę trudne.
Po drugie ktoś by musiał najpierw poznać technikę kryptograficzną którą serwis stosuje, czyli musiałby wpierw wbić się do naszej bazy danych i wykraść hashe dla poszczególnych użytkowników.Jak widzisz nie jest to proste.

Ten post edytował Niktoś 2.08.2012, 09:11:24
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #13





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(Niktoś @ 2.08.2012, 10:10:39 ) *
Nie twierdzę ,że nie jest możliwe wygenerować tablicę tęczową dla silniejszych algorytmów hashujących, ale potrzebna by była bardzo duża moc obliczeniowa,

O ile większa niż w przypadku md5?

Cytat(Niktoś @ 2.08.2012, 10:10:39 ) *
generowanie tak długiego ciągu za pomocą tablic tęczowych musiałaby być przeprowadzana przez kilka-kilkanaście komputerów.Proces tworzenia takiej tablicy przeprowadzany by musiał być przez grupę hakerów, a i to w przypadku Sha-512 byłoby naprawdę trudne.

Tak samo trudne vel proste jak w przypadku MD5.

Cytat(Niktoś @ 2.08.2012, 10:10:39 ) *
Po drugie ktoś by musiał najpierw poznać technikę kryptograficzną którą serwis stosuje, czyli musiałby wpierw wbić się do naszej bazy danych i wykraść hashe dla poszczególnych użytkowników.

Tak samo jak w przypadku każdego innego algorytmu hashującego

Cytat(Niktoś @ 2.08.2012, 10:10:39 ) *
Jak widzisz nie jest to proste.

Tak samo proste jak w przypadku MD5
Go to the top of the page
+Quote Post
Niktoś
post
Post #14





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


To po co używać mocniejszych algorytmów jak według Ciebie nie ma różnicy między md5 a Sha-512. Ty używaj sobie md5+sol ja sha 512 bez soli-ciekawe co będzie bezpieczniejsze.

Ten post edytował Niktoś 2.08.2012, 13:42:14
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #15





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Wydaje mi się że md5 + sól będzie bezpieczniejsze.
Nawet na pewno o ile sól będzie inna dla każdego usera.

Ten post edytował wNogachSpisz 2.08.2012, 13:51:37
Go to the top of the page
+Quote Post
-Gość-
post
Post #16





Goście







Cytat(wNogachSpisz @ 1.08.2012, 11:26:21 ) *
To zalezy co kto rozumie przez bezpieczne.
Na pewno można to zrobić lepiej.

1. Dodać sół.
2. Uzyć bardziej zasobożernego algorytmu hashującego.
3. Korzystanie z natywnycj sesji nie jest nalepszym pomysłem. Istnieje kilka dobrych bibliotek implementujących mechamizm sesji przy użyciu cookie i bazy danych.


Czy zakładając, że te wszystkie warunki zostaną spełnione, warto jeszcze zabezpieczać skrypt przed Session Fixation i Session Hijacking w sposób jaki opisane tutaj? Czy te może nie trzeba, bo te trzy powyższe sposoby, już same w sobie chronią przed Session Fixation i Session Hijacking?
Go to the top of the page
+Quote Post
!*!
post
Post #17





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Niach... Znowu temat o tym jak "robić bezpieczne logowanie", to już się nudne robi. Użyjcie wyszukiwarki.

Btw. Te przepychanki nie mają sensu. "złamcie" cokolwiek gdzie użyta jest sól, czas start.

Ten post edytował !*! 3.08.2012, 12:43:38
Go to the top of the page
+Quote Post
Niktoś
post
Post #18





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
Te przepychanki nie mają sensu. "złamcie" cokolwiek przy użyciu soli, czas start.

Złamcie Sha256 bez soli (IMG:style_emoticons/default/aarambo.gif) .

PS.Hashowanie haseł i dodawanie soli nie zabezpieczą cię przed xss, session fixation czy atakami typu injection.Nad tym trzeba dodatkowo popracować.

Ten post edytował Niktoś 3.08.2012, 12:46:48
Go to the top of the page
+Quote Post
!*!
post
Post #19





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(Niktoś @ 3.08.2012, 13:44:24 ) *
Złamcie Sha256 bez soli (IMG:style_emoticons/default/aarambo.gif)


Jakby tak zlutować kilka PS3 lub spiąć je na krótko, to może (IMG:style_emoticons/default/biggrin.gif) SHA256 nadal jest "nie złamane"? Bo tak na szybkiego wyczytałem tylko newsy z 2011
Go to the top of the page
+Quote Post
Niktoś
post
Post #20





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
SHA256 nadal jest "nie złamane"? Bo tak na szybkiego wyczytałem tylko newsy z 2011

Wszystko jest do złamania, ale będzie to wymagało więcej wysiłku potencjalnym hakerom(patrz l.mnoga), jeden nie da rady, chyba że będzie miał "superkomputer" w pokoju.

Ten post edytował Niktoś 3.08.2012, 12:56:13
Go to the top of the page
+Quote Post
!*!
post
Post #21





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Tak, wiem. Pytałem czy już ktoś coś zrobił w tej kewstii, tak jak ma to miejsce z md5, sha1 itd. Dlatego wspomniałem o PS3 dobra EOT.
Go to the top of the page
+Quote Post
redeemer
post
Post #22





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Niktoś: Wcale nie trzeba super komputera. Sam procesor, ram itd. jest mało niestotny. Istotne są GPU (w liczbie mnogiej). Karta graficzna w dobrym sprzęcie do gier komputerowych złamie Ci hasło dużo dużo szybciej niż np. Xeon E5540.

Dla przykładu karta ATI HD 5970 generuje 5 600 000 000 haszy MD5 na sekunde. Dla SHA1 jest to odpowiednio 2 300 000 000.

Ten post edytował redeemer 3.08.2012, 13:05:40
Go to the top of the page
+Quote Post
-Gość-
post
Post #23





Goście







Procesor na karcie graficznej nadaje się lepiej do generowania hashy od procesora głównego bo wynika to chyba z jej architektury (procesor główny jest lepiej przystosowane do wykonywania skomplikowanych operacji, natomiast procesor na karcie graficznej to wykonywania ogromnej liczby prostych operacji)?
Go to the top of the page
+Quote Post
redeemer
post
Post #24





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Generowanie hashy można porównać do "kopania" bitcoinów. Odpowiedź dlaczego GPU jest szybsze znajdziesz tu https://en.bitcoin.it/wiki/Why_a_GPU_mines_faster_than_a_CPU
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #25





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Nadal obstaje przy tym, że md5 + sól jest bezpieczniejsze od sha512.
Czas generowania jest w zasadzie pomijany, bo przy tworzeniu rainbow tables bottleneck jest z zupełnie innym miejscu

Przy brute-force to ma znaczenie, ale umówmy się, kto przy zdrowych zmysłach młuci brute-forcem dziesiątki czy setki tysięcy hashy z wypłyniętej bazy?

Ten post edytował wNogachSpisz 5.08.2012, 12:14:21
Go to the top of the page
+Quote Post
greycoffey
post
Post #26





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Cytat(wNogachSpisz @ 1.08.2012, 21:49:08 ) *
1. Wspólny katalog na pliki tymczasowe w prawie każdym low-end'owym współdzielonym hostingu (w tej sytuacji przejęcie sesji to banał).
2. Bujna historia BUGów natywnego mechanizmu sesji w PHP.

Miejsce przechowywania sesji można zmienić.
Podasz przykłady?

Cytat(Niktoś @ 2.08.2012, 10:10:39 ) *
Po drugie ktoś by musiał najpierw poznać technikę kryptograficzną którą serwis stosuje, czyli musiałby wpierw wbić się do naszej bazy danych i wykraść hashe dla poszczególnych użytkowników.Jak widzisz nie jest to proste.

Bezpiecznie jest wtedy, kiedy atakujący znając metodę mieszającą, hash, ewentualną sól, etc. nadal nie potrafi/jest to nieosiągalne by otrzaymać tekst jawny.

Cytat(wNogachSpisz @ 5.08.2012, 13:08:07 ) *
Nadal obstaje przy tym, że md5 + sól jest bezpieczniejsze od sha512.
Czas generowania jest w zasadzie pomijany, bo przy tworzeniu rainbow tables bottleneck jest z zupełnie innym miejscu

Przy brute-force to ma znaczenie, ale umówmy się, kto przy zdrowych zmysłach młuci brute-forcem dziesiątki czy setki tysięcy hashy z wypłyniętej bazy?

Jeżeli sól jest stała dla wszystkich użytkowników, można wygenerować rainbow table dla całej bazy. czas generowania jest pomijany, a jednak sha512 jest 2,6 razy wolniejszy od md5 (i tak sha512 jest szybkie (IMG:style_emoticons/default/wink.gif) ).
Nie rozumiem ostatniego pytania. Im więcej rekordów, tym większa szansa by trafić tekst jawny bruteforcem.
Go to the top of the page
+Quote Post
-Gość-
post
Post #27





Goście







Cytat(wNogachSpisz @ 1.08.2012, 12:32:16 ) *


Z chęcią bym użył tego rozwiązania. Trochę się tylko obawiam, czy warto zaprzęgać framework CodeIgniter tylko do tej jednej jedynej rzeczy (czyli do obsługi sesji)? A konkretnie, chodzi mi o to czy nie wpływie to negatywnie na szybkość wczytywania się strony?
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #28





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Nikt Ci nie każe zaprzęgać, możesz ją wyodrębnić i użyć bez frameworka.
Nie daje jednak gwarancji że będzie to zgodne z postanowieniami licencji. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-Gość-
post
Post #29





Goście







Cytat(wNogachSpisz @ 1.08.2012, 20:49:08 ) *
1. Wspólny katalog na pliki tymczasowe w prawie każdym low-end'owym współdzielonym hostingu (w tej sytuacji przejęcie sesji to banał).


A w tym wspólnym katalogu co jest przechowywane? Zmienne sesji?
Go to the top of the page
+Quote Post
-Gość-
post
Post #30





Goście







Cytat(wNogachSpisz @ 21.08.2012, 12:54:07 ) *
Nikt Ci nie każe zaprzęgać, możesz ją wyodrębnić i użyć bez frameworka.
Nie daje jednak gwarancji że będzie to zgodne z postanowieniami licencji. (IMG:style_emoticons/default/smile.gif)


To może coś takiego?
http://stackoverflow.com/questions/2006064...2819928#2819928

Czy taką implementacje mechanizmu sesji można uznać za bezpieczną?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 11:57