kryptering?

PHP

11 svar · 261 visningar · startad av greymane

Medlem sedan juli 2001711 inlägg
Trådstart#1

om jag ska skicka ett lösenord till en mysqldb, så har jag förstått att det är bra att kryptera infon. hur gör man det på ett lämpligt sätt? jag har läst manualen, fast jag blir inte klok på det. hur gör man?

Medlem sedan juni 20008 205 inlägg
#2

ENCRYPT eller PASSWORD:
http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Miscellaneous_functions

ENCRYPT torde dock bara funka på *NIX-system.

Medlem sedan juni 20008 205 inlägg
#3

Ett litet tillägg, om du kör med ENCRYPT, använd då användarnamnet som "salt" till lösenordet. Det blir jobbigare att brute force-cracka då :)

Medlem sedan sep. 200193 inlägg
#4

använd denna:

$cpwd = crypt( $password, "ty" );
Den ska fungera bra vettu.. tror den e bäst..

Medlem sedan juni 20008 205 inlägg
#5

Fast det är inge bra att binda innehållet i databasen till en funktion i ett programmeringsspråk... använd de funktioner som finns i MySQL. Och det där jag sa om salt var bara skitsnack (tror jag...).

Medlem sedan sep. 200193 inlägg
#6

Jag rekomenderar ändå crypt ovan.

Då det är ganska säkert att inte kunna kryptera upp ett lösenord, ska man kolla om det stämmer så krypterar man bara strängen man vill jämföra med och kollar om de är lika, annars är det fel.. :P

Är det så att någon glömmer lösenordet så får man helt enkelt byta..

Ganska bra att ha det såhär om någon nu skulle komma åt registret så kan ingen se vilka lösenord som används...

Medlem sedan juli 2001711 inlägg
#7

så för att lägga in ett lösenord i dbn skriver jag:

$cpwd = crypt( $password, "ty" );

och för att jämföra med lösenordet som användaren skriver in vid inloggning skriver jag typ:

if ($cpwd == crypt($anv_pwd, "ty") {
   echo "Rätt lösen"
}
else {
   echo "Fel lösen"
}

kan det va nåt?

Medlem sedan maj 20001 953 inlägg
#8

Krypt fungerar inte på Windows om jag inte har fel?
Varför inte använda en enkel md5()? Det tycker jag borde ge tillräcklig säkerhet?

Medlem sedan juli 2001711 inlägg
#9

jag kör linux, så jag använder gärna crypt(). men hur gör man?! :)

Medlem sedan juni 20008 205 inlägg
#10

Jag rekomenderar ändå crypt ovan.
Jag rekommenderar att man använder ENCRYPT eller PASSWORD i MySQL :) ENCRYPT använder sannolikt samma algoritm som crypt i php (eftersom de bestäms av det underliggande systemets krypteringsalgoritm), så de är lika säkra, men man slipper alla de problem man riskerar om man binder databasen till ett visst programmeringsspråk på en viss plattform. Tilläggas bör att PASSWORD är den algoritm som används för att kryptera lösenorden i de tabeller som MySQL använder för att hålla reda på rättigheterna, så den lär inte vara helt kass den heller. Exempel:

$userName = "barbapappa";
$passwd = "skumgummi";

$conn = mysql_connect('localhost', 'foo', 'bar');
mysql_use_db('hemlisar');

$insert = "INSERT INTO user (u_name, u_passwd) VALUES ('$userName', PASSWORD('$passwd'))";
mysql_query($insert);

$search = "SELECT * FROM user WHERE u_passwd = PASSWORD('$passwd') AND u_name = '$userName'";
$result = mysql_query($search);
$row = mysql_fetch_object($result);

if(!$row){
echo "Felaktig inloggning"; // lösen eller anvnamn är fel
} else {
echo "Välkommen $row->u_name";
}

PASSWORD ovan går utmärkt att byta ut mot ENCRYPT: INSERT INTO user (u_name, u_passwd) VALUES ('$userName', ENCRYPT('$passwd', 'ty')). Observera att båda algoritmerna är "enkelriktade", så det går inte att dekryptera ett lösenord (inte utan brute force-cracking).

Medlem sedan juni 20008 205 inlägg
#11

Förresten, bara så du vet så ger PASSWORD alltid ett resultat på 32 tecken (varför CHAR(32) är en lämplig datatyp för lösenordskolumnen) - förutsatt att jag nu minns rätt ;)

Medlem sedan jan. 20014 973 inlägg
#12

Fast det är inge bra att binda innehållet i databasen till en funktion i ett programmeringsspråk... använd de funktioner som finns i MySQL. Och det där jag sa om salt var bara skitsnack (tror jag...).

Helt rätt, det känns som om du går omvägen via PHP, när det du söker redan finns i MySQL.

258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)