Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]hashowanie za pomoca md5(); adresu URL
Forum PHP.pl > Forum > Przedszkole
Czapla
Załóżmy że nie chce tworzyć żądnych modrewritów. I wykonać taki zabieg estetyczny aby mój adres był hashowany na algorytm md5();
  1. <?php
  2. $_GET['zmienna1'];
  3. $_GET['zmienna2'];
  4.  
  5. 'http//www.strona.pl/pokaz_strone.php?id_strona=".$zmienna1."&id_numer_strony=".$zmienna2."'
  6. ?>

zamienił się na:
  1. <?php
  2. $_GET['hash'];
  3. 'http//www.strona.pl/pokaz_strone.php?hash=d41d8cd98f00b204e9800998ecf8427e'
  4. ?>


Skoro $_GET wysyła zmienne przez adres URL,
Moje pytanie jest następujące: Czy jest możliwa zmiana adresu na hash i możliwość przesłania zmiennych zhashowanych przez $_GET.

Pozdrawiam
Kicok
Oczywiście, że jest możliwe smile.gif
  1. <?php
  2.  
  3. if( !isset( $_GET['hash'] ) )
  4. {
  5. header( 'Location: pokaz_strone.php?hash=' . md5( $_SERVER['QUERY_STRING'] );
  6. }
  7.  
  8. ?>



I uprzedzając twoje następne pytanie:
Oczywiście, że nie da się odszyfrować hasha md5 smile.gif
Gloin Eldring
a ja dam cytat

Dopiero prace badawcze chińskich naukowców Xiaoyun Wang, Dengguo Fen, Xuejia Lai i Hongbo Yu w pełni wykazały słabość algorytmu. 17 sierpnia 2004 opublikowali oni analityczny algorytm ataku, dzięki któremu do podrobienia podpisu wystarczyła godzina działania klastrowego komputera IBM P690.
Mrowek
Gloin .:respect:.
jeszcze jakbys mogl podac strone z calym artykulem
Pozdrawiam
ps sorry za off top
hwao
Można zrealizować w pewnym stopniu Twoją myśl w miarę prosty sposób.

Jeżeli dane są zapisane w bazie danych, a "id_strona" ma odpowiednik jakiegoś pola w tabeli, po wykonaniu takiej operacji otrzymasz poprawne dane:

Zapisujemy ID jako hash
  1. <a href="strona.php?id_strona=<?php echo md5( $NumerID ); ?>">Link</a>


  1. SELECT * FROM `foo` WHERE MD5( `id_strona` ) = $_GET['id_strona'] LIMIT 1


Po tej operacji też otrzymamy wiersz o danym "id". Minusem tego rozwiązania jest działanie na stringach, gdyż jest wolniejsze niż operacja na liczbach.
Żeby zoptymalizować operacje dodajemy pole `id_hash` i w nim zapisujemy hash ale przekształcony z hex na dec. Podobną operacje wykonujemy na $_GET i mamy klucz do porównia

  1. SELECT * FROM `foo` WHERE `id_hash` = $id_strona_hex_to_dec LIMIT 1


Minusem z kolei tego rozwiązania jest to, że w polu `id_hash` będą trzymane spore liczby.
Kicok
@Gloin Eldring

Odszyfrować (czy też "odhashować") hasha md5 się nie da. Można co najwyżej znaleźć kolizję ( brute forcem, tęczowymi tablicami albo nawet tym algorytmem wspomnianym na wikipedii ) - ale co mu po ciągu znaków "@#"SDd3fó~l|", którego hash jest takji sam jak "param1=wartosc1&param2=wartosc2&param3=wartosc3" ?
hwao
Kicok ale można porównać hashe z tym co ma w bazie danych, jak z kombinacji wyjdzie to samo to już wie co zahashował.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.