webForumDet fria alternativet

Kryptera lösen som skickas via webläsarfönstret

PHP

11 svar · 507 visningar · startad av nkrantz

Medlem sedan apr. 2002830 inlägg
Frågan#1

Hej!

I en script som jag håller på med så vill jag att ett mail skall gå ut till de registrerade användarna, med en länk innehållande typ: https://www.blabla.com/login.php?user=userName&pass=XXXXXXX
där XXXXXXX skall vara ett krypterat lösenord. Jag har kollat på en del grejer om hur jag skall få det att funka, men kommer inte på något bra sätt riktigt...

För om jag skulle använda mig av md5 så skulle jag vara tvungen att spara alla lösenord i databasen som md5 för att kunna köra en kontroll, och sparar jag det som md5 så kan jag ju inte ta fram det "riktiga lösenordet", eller hur...

Finns det något bra sätt, behöver inte vara av NASA säkerhet, som gör att jag både kan koda och avkoda ett lösen?

// Nippe

Medlem sedan mars 20007 896 inlägg
#2

Skriv en egen algoritm, det är det bästa - eller använd en tredjeparts via exec(). Om du använder ett skrivet i PHP finns risken att andra kan dekryptera det med samma algoritm, då de ser att du använder PHP.

Medlem sedan apr. 2002830 inlägg
#3

Men det är egentligen inte något stort problem att andra kan dekryptera det, jag vill bara inte att det skall skickas ut som plain text... Men om man skriver en egen algorimt, det är ju jobbigt juh! *suck*

Skulle man kunna göra så att när man kollar inloggningen först plockar ut det username som användaren har, konverterar lösenordet till md5 och sedan jämför det med det skickade lösenordet? Det låter som en ganska smart lösning på problemet, ingen kan väl decoda md5'an? Fast å andra sidan så sparas lösenordet som plain text i databasen vilket kanske inte är så säkert...

*tänker*

Medlem sedan mars 20007 896 inlägg
#4

Ok, då skulle jag använda MD5() - om det inte behöver vara så säkert. :)

Lagra lösenordet krypterat, antingen med MD5() eller MySQLs PASSWORD()-funktion. Tappas ett lösenord bort, skicka ett nytt lösenord som användaren sen kan ändra.

Medlem sedan apr. 2002830 inlägg
#5

Hm... fast det kommer ändå inte funka som jag vill då... Jag vill följande:
1. snubben får ett mail med en länk, länken loggar honom automatiskt in på siten.
2. Han får ett litet fint meddelande som säger att han är välkommen å en massa annat tjafs, sedan så står hans användarnamn och lösen där så han kan logga in igen.

Å då går det inte att ha lösenordet krypterat i databasen... eller?

Medlem sedan mars 20007 896 inlägg
#6

Nej, då blir det svårt. Då får helt enkelt plocka ut lösenordet med en SQL-fråga, och jämföra i PHP. Med MD5(), t.ex. :)

Medlem sedan mars 20007 896 inlägg
#7

Vänta nu, MySQL har väl funktionerna CRYPT() och DECRYPT()? Med dom kanske du skulle kunna trolla lite... Ska kolla i MySQL-manualen för säkerhetsskull, så att jag inte sitter här och ljuger. ;)

Medlem sedan mars 20007 896 inlägg
#8

Det hette inte CRYPT och DECRYPT, utan ENCODE och DECODE. :)

Medlem sedan apr. 2002830 inlägg
#9

SPiN är bra han!

ENCODE(str,pass_str)
Encrypt str using pass_str as the password. To decrypt the result, use DECODE(). The results is a binary string of the same length as string. If you want to save it in a column, use a BLOB column type.
DECODE(crypt_str,pass_str)
Descrypts the encrypted string crypt_str using pass_str as the password. crypt_str should be a string returned from ENCODE().

http://www.mysql.com/doc/M/i/Miscellaneous_functions.html

Tack för hjälpen, ska testa lite!

// Nippe

Medlem sedan apr. 2002830 inlägg
#10

If you want to save it in a column, use a BLOB column type.

Varför måste man göra det? Reserverar inte en BLOB mycket mer minne än ev vanlig VARCHAR(15) som jag har nu???

Medlem sedan mars 20007 896 inlägg
#11

Det vet jag faktiskt inte. Du kan ju alltid använda TINYBLOB i så fall, det är ju en kolumntyp av typen BLOB ( Kan lagra upp till 255 tecken, samma som VARCHAR alltså ) och är den "minsta" kolumntypen av BLOBarna.

Medlem sedan jan. 2002341 inlägg
#12

skapa en md5() i länken..

sen kör du bara på sidan..

if($länk_pass == md5($db_pass)){
echo "yehaa, inne";
} else {
echo "gå å dö";
}
258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)