Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V  < 1 2 3 >  
Reply to this topicStart new topic
> [PHP] md5 czy sha1 ?
vokiel
post
Post #21





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Dołączę się do tematu, trochę z innej strony.
Zwykle w skryptach logowania podaje się coś takiego:
  1. <?php
  2. if (isset($_POST['login']) && isset($_POST['haslo'])){
  3. $login = str_replace("'", '', $_POST['login']); // oczysczenie loginu
  4. $haslo = md5 ($_POST['haslo']); // md5 na hasło, tak jak jest przechowywane w bazie
  5. // [...] ciąg dalszy skryptu
  6. ?>

Ale tu moim zdaniem te md5 nie jest tak bardzo dobre. Bo jest hashowane dopiero na serwerze przez interpreter php. A do serwera jest przesyłane otwartym tekstem, zatem istnieje możliwość podsłuchania (chociażby jakimś snifferem po LANie). Czyli wnioskując dalej md5 powinno być użyte po stronie przeglądarki (javascript).
Jak sądzicie? Może się mylę, ale tak mi się wydaje na logikę.
Go to the top of the page
+Quote Post
drPayton
post
Post #22





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Dlatego w systemach, w których wymagane jest wysokie bezpieczeństwo stosuje się SSL poprzez https

A tak przy okazji: http://md5.rednoize.com/
Spora baza... Naprawdę spora
Go to the top of the page
+Quote Post
tsharek
post
Post #23





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

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


Cytat(drPayton @ 3.11.2007, 11:41:02 ) *
A tak przy okazji: <a href="http://md5.rednoize.com/" target="_blank">http://md5.rednoize.com/</a>
Spora baza... Naprawdę spora


kolejny dowód że "sól" jest niezastąpiona:)
Go to the top of the page
+Quote Post
Gigakomputer
post
Post #24





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.11.2007
Skąd: Gliwice

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


Mówiliśmy już na temat "soli" i kodowania... pozdrowiania "tsharek" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Masz oczywiście rację co do tematu wykładu z md5. Ja osobiście używam kodowania na "podwójnej soli":
Kod
<?php
//Załóżmy ze mamy juz zdefiniowaną zmienną wyjściową z hasłem o nazwie: $pass
$ip = $HTTP_SERVER_VARS['REMOTE_ADDR']; //Pobiera adres IP komputera
$today = date("m.d.Y, H:i:s");//Pobiera aktualną datę i czas np. 01.02.03, 13:12:59
$pass="supertajne_hasło";

$wynik=md5(sha1($pass.$ip.$today)); //generuje wynik "podwójnej soli"
echo $wynik;
?>


To tyle... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Powodzenia !
Go to the top of the page
+Quote Post
b_chmura
post
Post #25





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


Cytat(Gigakomputer @ 9.11.2007, 17:44:37 ) *
Mówiliśmy już na temat "soli" i kodowania... pozdrowiania "tsharek" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Masz oczywiście rację co do tematu wykładu z md5. Ja osobiście używam kodowania na "podwójnej soli":
Kod
<?php
//Załóżmy ze mamy juz zdefiniowaną zmienną wyjściową z hasłem o nazwie: $pass
$ip = $HTTP_SERVER_VARS['REMOTE_ADDR']; //Pobiera adres IP komputera
$today = date("m.d.Y, H:i:s");//Pobiera aktualną datę i czas np. 01.02.03, 13:12:59
$pass="supertajne_hasło";

$wynik=md5(sha1($pass.$ip.$today)); //generuje wynik "podwójnej soli"
echo $wynik;
?>


To tyle... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Powodzenia !



Pobierasz aktualny czas i ip komputera, a jeśli ktoś korzysta z komputera o innym ip i w innym czasie? hasła nie będą sie zgadzały
Go to the top of the page
+Quote Post
phpion
post
Post #26





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(b_chmura @ 9.11.2007, 20:11:00 ) *
Pobierasz aktualny czas i ip komputera, a jeśli ktoś korzysta z komputera o innym ip i w innym czasie? hasła nie będą sie zgadzały

Chyba nie rozumiesz idei soli... tworzysz klucz (wolę takie określenie) w momencie zapisu danych do bazy. Podczas logowania pobierasz hasło od usera, po czym pobierasz klucz (na podstawie loginu) i kodujesz podane hasło tymże kluczem, po czym porównujesz wynik z hasłem z bazy. Tyle.
Go to the top of the page
+Quote Post
b_chmura
post
Post #27





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


z kodu powyżej całkiem co innego wynika
  1. <?php
  2. $wynik=md5(sha1($pass.$ip.$today))
  3. ?>

domyślam sie ze
$pass - hasło podane w formularzu
$wynik - wartość którą porównam z hasłem w bazie
Go to the top of the page
+Quote Post
phpion
post
Post #28





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytuj całość:
  1. <?php
  2. $wynik=md5(sha1($pass.$ip.$today)); //generuje wynik "podwójnej soli"
  3. ?>

Konkretnie chodzi mi o komentarz. Ta linijka po prostu generuje klucz (sól).
Go to the top of the page
+Quote Post
drPayton
post
Post #29





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Ale przecież potem, kodując wpisane hasło (przy logowaniu), dla porównania z hasłem z bazy zakodować je z użyciem tej samej "soli" vel klucza. Jak, skoro przy zapisie to była tamta data? No, chyba że została ona zapisana również do bazy...

Ten post edytował drPayton 9.11.2007, 20:02:37
Go to the top of the page
+Quote Post
phpion
post
Post #30





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie rozumiem problemu...

Rejestracja:
- user wypełnia formularz
- skrypt pobiera login i hasło z formularza
- pobiera ip, date i co tam trzeba
- tworzy klucz na podstawie tych danych
- zapisuje do bazy login, zakodowane kluczem haslo, klucz

Logowanie:
- user podaje login oraz haslo
- z bazy wyciągany jest klucz oraz zakodowane hasło dla usera o podanym loginie
- za pomocą klucza z bazy kodowane jest hasło podane przez usera
- powyższe hasło porównywane jest tym z bazy

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował phpion.com 9.11.2007, 20:11:40
Go to the top of the page
+Quote Post
drPayton
post
Post #31





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Aaa, czyli klucz jest przechowywany, to zmienia postać rzeczy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
phpion
post
Post #32





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Gigakomputer
post
Post #33





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.11.2007
Skąd: Gliwice

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


Metoda która tu opisałem ( metoda podwójnej soli ) ma na celu jakby podwojne zabezpieczenie dowolnego ciągu znaków (string), które z kolei przesyłane są przez formularz podczas próby zalogowania uzytkownika do serwisu. Dokładniej opisując temat...
Cytat
1. Podczas rejestracji użytkowników, pewien człowiek podaje login, hasło i jakieś inne dane kontaktowe lub identyfikujące daną osobę w systemie.
1a. Jeśli proces rejestracji przebiegł pomyślnie, użytkownik kierowany jest na stronę logowania.
2. Po wprowadzeniu do pół (login i hasło) odpowiednich danych następuje proces logowania... czyli:
2a. Po kliknięciu przycisku "loguj" zostaje wysłane do serwera zapytanie czy wprowadzone dane zgadzają się z tymi które wprowadził użytkownik podczas logowania.
2b. Jednocześnie podczas kliknięcia w w/w przycisk skrypt umieszczony na stronie logowania pobiera adres IP uzytkownika który zarejestrował sie pod danym nickiem, czas w którym się to stało prosto z bazy danych, oraz wpisane niedawno hasło, które przekazuje do zmiennej $pass.Te 3 zmienne miesza ze sobą, a następnie koduje w następujący sposób
Kod
$wynik=md5(sha1($pass.$ip.$today));
Jak widzisz, całość zwraca w postaci zmiennej $wynik.
3. Następuje sprawdzenie hasła w bazie danych, i określenie czy pasuje do wpisanego loginu [(...)WHERE 'user_name'=$login;]
3a. Jesli tak, to gratuluję jesteś zalogowany ( nooo może jeszcze ustawić ciastka i sesje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
3b. Jesli nie, użytkownik jest kierowany ponownie na stronę logowania lub rejestracji

UFFFFF (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) To tak w wielkim skrócie i uproszczeniu... heheh (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) POZDRAWIAM !
Go to the top of the page
+Quote Post
k3nsei
post
Post #34





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 25.06.2008

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


Cytat(Black-Berry @ 2.11.2007, 13:19:02 ) *
@drPayton Naprawdę nie wiem za wiele o funkcji md5 ale inho... jesli jakaś algorytm daje ciągle te same wyniki dla tych samych danych to znając ten algorytm (ktos go przecież musi znać bo go napisał ) jest w stanie napisać algorytm odwrotny. Tak więc algorytm odwrotny teoretycznie może istnieć lub też istnieje. No i teraz jeśli nie używamy "soli" to jeśli ktoś opublikuje algorytm odwrotny dla md5 to bedzie mógł odkodować wszystkie zahashowane klucze.

Jak by się tak dało to z hashu mógł byś rozkodować pliki np. 1 GB w parę sekund wyobraź to sobie przecież to nie możliwe.

Mógł by ktoś dać jakiś example jak korzystać z salt ziarna czy jak tam to zwą?
I bezpieczniejsze jest używanie tego z md5 czy sha1?

Ten post edytował k3nsei 25.06.2008, 18:44:12
Go to the top of the page
+Quote Post
mike
post
Post #35





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


~k3nsei starszych kotletów do odgrzania nie było?
Go to the top of the page
+Quote Post
k3nsei
post
Post #36





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 25.06.2008

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


Po prostu szukałem w wyszukiwarce, chcę wiedzieć jak korzystać z tych salt ziarno czy jak tam to się zwie.
Go to the top of the page
+Quote Post
.radex
post
Post #37





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Cytat(k3nsei @ 25.06.2008, 19:43:19 ) *
Jak by się tak dało to z hashu mógł byś rozkodować pliki np. 1 GB w parę sekund wyobraź to sobie przecież to nie możliwe.


A bo istnieje jeszcze coś takiego jak kolizja.
Go to the top of the page
+Quote Post
marcio
post
Post #38





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Hehe takich tematow bylo 100tki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) a co powiecie o http://www.php.net/crypt(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
mike
post
Post #39





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(k3nsei @ 25.06.2008, 19:52:41 ) *
Po prostu szukałem w wyszukiwarce, chcę wiedzieć jak korzystać z tych salt ziarno czy jak tam to się zwie.
Chodzi o to by nie korzystać z funkcji skrótu dla samego gasła tylko "doklejać" coś jeszcze. Na przykład pierwszą literę loginu. Lub cały login.
Wtedy kiedy atakujący znajdzie kolizję dla naszego skrótu to i tak nie będzie mógł posłużyć się nim jako hasłem.
Go to the top of the page
+Quote Post
maziak
post
Post #40





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


EDIT :
<zawartosc usunąłem>
Jasna cholercia, tożto temat sprzed pół roku, a ja juz sie za odpowiadanie na jedne z pierwszych postow zabralem.

Ten post edytował maziak 26.06.2008, 00:21:01
Go to the top of the page
+Quote Post

3 Stron V  < 1 2 3 >
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: 26.03.2026 - 00:32