Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Hashowanie hasła - md5
darophp
post
Post #1





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


Słuchajcie, mam dosyć dziwny problem. Mianowicie robię panel klienta i wszystko jest zrobione od jakiegoś czasu. Nie testowałem skryptu logowania - do dzisiaj. gdy chcę się zalogować do bazy a hasło mam ustawione test1234 to zaloguje. Natomiast gdy wyłączę kompa i włączę jeszcze raz to hasło się zmienia (resetuje) na:
Kod
d41d8cd98f00b204e9800998ecf8427e

Z tego co się dowiedziałem u wujka Google oznacza to null lub inaczej 0 czy nawet brak znaków.
Czym to może być spowodowane ?
Tak wygląda struktura:
password | varchar(32) | latin2_general_ci | Nie | None
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A to nie jest przypadkiem tabela memory?
Go to the top of the page
+Quote Post
darophp
post
Post #3





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


To jest tabela MYlSAM.

Edit:

Dodam kod ...
Kod
session_start();

$login     = $_POST["login"];
$haslo     = $_POST["password"];

if ($_GET["login"]=="end") {
  session_unset();
  session_destroy();
} else if ($login<>"" and $haslo<>"") {
  $password = md5($haslo);
  if ($connect) {
    if (mysql_select_db($mysql_baza)) {
      $wynik=mysql_query("SELECT * FROM clients WHERE login='$login' and password='$password'");
      if (mysql_num_rows($wynik)==1) {
        $dane=mysql_fetch_array($wynik);
        $_SESSION["logged"]="yes";
        $_SESSION["login"]=$dane["login"];
        $_SESSION["email"]=$dane["email"];
        ...
      }
    } else echo "Nie można połączyć się z bazą";
    mysql_close($connect);
  }
}


Ten post edytował darophp 11.06.2010, 20:22:43
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. if ($_GET["login"]=="end") {
  2. }

Wiem, że się czepiam, ale po co tu session_unset?
Go to the top of the page
+Quote Post
darophp
post
Post #5





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


Chyba zadziałało usunięcie. Ale teraz trzeba kliknąć dwa razy w butona aby wylogowało. No tyle mogą zrobić klienci (IMG:style_emoticons/default/biggrin.gif) Jeśli coś będzie nie działać będę pisał.
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Samo session_destroy wystarczy. session_unset jest do czego innego, w dodatku - ma status deprecated.
Go to the top of the page
+Quote Post
darophp
post
Post #7





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


Coś jakby dalej jest problem...

(IMG:http://img717.imageshack.us/img717/8272/beznazwy1tt.png)
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




coś, to znaczy co?
Go to the top of the page
+Quote Post
darophp
post
Post #9





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


Zobacz ze w polu password występuje 0 czyli nic a były hasła np ...cc18sd5... no jakoś tak się zaczynało

Ten post edytował darophp 13.06.2010, 20:39:08
Go to the top of the page
+Quote Post
phpion
post
Post #10





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




Cytat(darophp @ 13.06.2010, 21:38:20 ) *
Zobacz ze w polu password występuje 0 czyli nic a były hasła np ...cc18sd5... no jakoś tak się zaczynało

Cytat(darophp @ 13.06.2010, 21:20:01 ) *

Ja tam widzę hashe, a nie 0.

//Edit:
Już wiem - są to hashe pustego ciągu. Czyli musisz gdzieś mieć UPDATE, który aktualizuje ci hasła (i to bez warunku). Innej opcji nie widzę.

Ten post edytował phpion 14.06.2010, 13:32:20
Go to the top of the page
+Quote Post
darophp
post
Post #11





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


Nosz kur..cze Jak to poprawić ?
Kod
if ($page=="settings") {
  echo "<p>Twój login: ".$_SESSION["login"]."<br/>Twój email: ".$_SESSION["email"]."</p>";
  $password = md5($_POST["password"]);
if ($connect) {
  $wynik = mysql_query("UPDATE clients SET password='$password' WHERE login='{$_SESSION["login"]}'");
echo <<<FORM
<form action="/index.php?page=settings" method="post">
<p>Hasło: <input type="password" name="password" /></p>
<input type="submit" class="change" value=" " />
</form><div style="margin-top: 310px;"></div>
FORM;
}
}


Ten post edytował darophp 14.06.2010, 13:36:15
Go to the top of the page
+Quote Post
phpion
post
Post #12





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




Pewnie $_POST['password'] masz puste. I pewnie wiem dlaczego: nie sprawdzasz czy formularz został wysłany tylko z pały aktualizujesz dane. Sprawdź czy formularz został wysłany (np. count($_POST) > 0) albo sprawdź samą długość $_POST['password'] > 0.

Ten post edytował phpion 14.06.2010, 13:38:38
Go to the top of the page
+Quote Post
darophp
post
Post #13





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


No właśnie ... tylko jak to zrobić .. ?
Kod
if ($page=="settings") {
  echo "<p>Twój login: ".$_SESSION["login"]."<br/>Twój email: ".$_SESSION["email"]."</p>";
  $password = md5($_POST["password"]);
if ($connect) {
  $wynik = mysql_query("UPDATE clients SET password='$password' WHERE login='{$_SESSION["login"]}'");
if (empty($_POST["submit"])) {
echo <<<FORM
<form action="/index.php?page=settings" method="post">
<p>Hasło: <input type="password" name="password" /></p>
<input type="submit" class="change" value=" " />
</form>
FORM;
}
   else {
     echo "Błąd. Nie zmieniono hasła."; }
}
echo "<div style=\"margin-top: 310px;\"></div>";
}
Go to the top of the page
+Quote Post
thek
post
Post #14





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




$_POST w formularzu zawsze będzie > 0, bo zaliczy submita choćby więc to żadne zabezpieczenie. Tu trzeba sprawdzać prędzej czy aby !empty( $_POST['password'] ) i od tego uzależniać także czy update jest czy nie. Oczywiście to tylko z grubsza zarysowane. Powinieneś od razu zabezpieczać form przed odświeżaniem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
phpion
post
Post #15





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




Cytat(thek @ 16.06.2010, 21:18:42 ) *
$_POST w formularzu zawsze będzie > 0, bo zaliczy submita choćby więc to żadne zabezpieczenie.

Na marginesie: nie zgodzę się. Jeśli nie nadasz nazwy submitowi (poprzez atrybut name) to nie pojawi się on w tablicy $_POST.
Go to the top of the page
+Quote Post
thek
post
Post #16





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




No tak... o Tym przypadku zapomniałem (IMG:style_emoticons/default/smile.gif) Choć z drugiej strony dowolny input type="text", też sprawi, że $_POST nie będzie pusta. A w sumie rzadko używa się formularzy, które nie mają żadnego pola do uzupełnienia.
Go to the top of the page
+Quote Post

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: 16.09.2025 - 08:48