Kom ihåg mig?
Home Menu

Menu


sha1 och salt

 
Ämnesverktyg Visningsalternativ
Oläst 2009-10-09, 11:59 #1
AnOnYmUs AnOnYmUs är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 868
AnOnYmUs AnOnYmUs är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 868
Standard sha1 och salt

Tjo.

Satt uppe hela natten och gav mig på sha1 och salt för första gången. Innan jag ställer min fråga här vill jag först påpeka att mina php-kunskaper är 0.1, och att jag normalt sett aldrig ger mig på sånt här. Men hur som helst, jag satt och pillade i ett script och lyckades få registreringen i scriptet till att sha1+salta lösenordet innan det sparades i db:n.

Problemet jag nu sitter med är inloggningen där jag inte får det att fungera. Jag läste om hur man kunde göra via en engelskspråkig sida och det mesta var ganska simpla saker.

Nu är problemet att när jag vänder proceduren för att kolla lösenordet som användaren skriver in är lika det som finns i db:n så fungerar det inte. Just den här kodsnutten får jag inte att fungera:

$sql="select password,active from members where username='".$_POST['username']."'";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
$dbpass=$row[0];
$active=$row[1];
}
$salt="abcdefhijklmn";
$password=$_POST['password'];
if($dbpass==sha1($salt.$password))
{

Så min fråga är, vad kan det bero på? Har jag missat ngt. Tacksam för förslag, men försök gärna ge förslag om vad det är för fel på just denna, för jag tror inte att längre ombyggda koder för mig smartare just nu (har sovit 3 timmar) :P

Tack! //AnOn
AnOnYmUs är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 12:21 #2
fabians avatar
fabian fabian är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2004
Inlägg: 2 162
fabian fabian är inte uppkopplad
Klarade millennium-buggen
fabians avatar
 
Reg.datum: Jul 2004
Inlägg: 2 162
Citat:
Ursprungligen postat av AnOnYmUs Visa inlägg
Tjo.

Satt uppe hela natten och gav mig på sha1 och salt för första gången. Innan jag ställer min fråga här vill jag först påpeka att mina php-kunskaper är 0.1, och att jag normalt sett aldrig ger mig på sånt här. Men hur som helst, jag satt och pillade i ett script och lyckades få registreringen i scriptet till att sha1+salta lösenordet innan det sparades i db:n.

Problemet jag nu sitter med är inloggningen där jag inte får det att fungera. Jag läste om hur man kunde göra via en engelskspråkig sida och det mesta var ganska simpla saker.

Nu är problemet att när jag vänder proceduren för att kolla lösenordet som användaren skriver in är lika det som finns i db:n så fungerar det inte. Just den här kodsnutten får jag inte att fungera:

$sql="select password,active from members where username='".$_POST['username']."'";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
$dbpass=$row[0];
$active=$row[1];
}
$salt="abcdefhijklmn";
$password=$_POST['password'];
if($dbpass==sha1($salt.$password))
{

Så min fråga är, vad kan det bero på? Har jag missat ngt. Tacksam för förslag, men försök gärna ge förslag om vad det är för fel på just denna, för jag tror inte att längre ombyggda koder för mig smartare just nu (har sovit 3 timmar) :P

Tack! //AnOn
Varför inte:

PHP-kod:
$sql="SELECT password, active FROM members WHERE username = '".$_POST['username']." AND password = SHA1('".$_POST['password']."' + 'abcdefhijklmn');"
fabian är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 12:41 #3
taz76 taz76 är inte uppkopplad
Flitig postare
 
Reg.datum: Jan 2008
Inlägg: 388
taz76 taz76 är inte uppkopplad
Flitig postare
 
Reg.datum: Jan 2008
Inlägg: 388
AnOn -> läs på om sql injections
taz76 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 13:10 #4
fabians avatar
fabian fabian är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2004
Inlägg: 2 162
fabian fabian är inte uppkopplad
Klarade millennium-buggen
fabians avatar
 
Reg.datum: Jul 2004
Inlägg: 2 162
Ja precis, glömde kommentera det, men du borde verkligen validera indata innan du kör in det i ett mysq-query!

http://webdesignskolan.se/php/mysql_...njections.html
fabian är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 13:34 #5
AnOnYmUs AnOnYmUs är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 868
AnOnYmUs AnOnYmUs är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 868
Okej, ska jag lägga till mysql_real_escape_string då?

$password=mysql_real_escape_string($_POST['password']); exempelvis?
AnOnYmUs är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 13:36 #6
Johan_S Johan_S är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 99
Johan_S Johan_S är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 99
Precis så, men gör detta endast på data som du sedan ska köra i SQL querys av olika slag. Du bör även kontrollera om ett siffervärde är ett siffervärde osv, förutsätt att användaren inte vet vad denna gör.
Johan_S är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 13:43 #7
AnOnYmUs AnOnYmUs är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 868
AnOnYmUs AnOnYmUs är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 868
Tack för svaren och tipsen. Känns dock som om jag behöver lösa just delen med sha1 o salt först, innan jag ger mig på det andra.
AnOnYmUs är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 14:00 #8
Johan_S Johan_S är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 99
Johan_S Johan_S är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 99
Läsning: http://us3.php.net/manual/en/function.sha1.php

Testa att köra salt och kontrollera manuellt om salten stämmer, kan vara små saker som att du inte har tillräcklig längd på fältet i databasen som strular.

Lite exempel som jag tror ska vara duliga (otestat):

//Definera salt
$salt = "abcdefhijklmn";

//Ta emot formulärdata
$user = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string(($_POST['pass']);

//Salta lösen
$pass_salted = sha1($salt.$pass));


$result_getUser = mysql_query("SELECT password,active FROM members WHERE username='$user' AND password = '$pass_salted'");

if (mysql_num_rows($result_getUser) == 0){

//Fel lösen eller ingen användare
exit;

} else {

//Sätt session för inloggning eller visa hemlig sida

}
Johan_S är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 14:23 #9
AnOnYmUs AnOnYmUs är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 868
AnOnYmUs AnOnYmUs är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 868
Citat:
Ursprungligen postat av Johan_S Visa inlägg
Läsning: http://us3.php.net/manual/en/function.sha1.php

Testa att köra salt och kontrollera manuellt om salten stämmer, kan vara små saker som att du inte har tillräcklig längd på fältet i databasen som strular.

Lite exempel som jag tror ska vara duliga (otestat):

//Definera salt
$salt = "abcdefhijklmn";

//Ta emot formulärdata
$user = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string(($_POST['pass']);

//Salta lösen
$pass_salted = sha1($salt.$pass));


$result_getUser = mysql_query("SELECT password,active FROM members WHERE username='$user' AND password = '$pass_salted'");

if (mysql_num_rows($result_getUser) == 0){

//Fel lösen eller ingen användare
exit;

} else {

//Sätt session för inloggning eller visa hemlig sida

}
Du hade helt rätt, varchar(12) <- där hade vi ett stort problem
AnOnYmUs är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-09, 14:25 #10
SimonPs avatar
SimonP SimonP är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2006
Inlägg: 832
SimonP SimonP är inte uppkopplad
Mycket flitig postare
SimonPs avatar
 
Reg.datum: May 2006
Inlägg: 832
Lägg helst saltet sist eller på båda sidorna (ändå bättre) för att försvåra bruteforce-attacker. Exempel:
$pass_salted = sha1($salt.$pass.$salt);
SimonP är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:52.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017