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?
kryptering?
11 svar · 254 visningar · startad av greymane
ENCRYPT eller PASSWORD:
http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Miscellaneous_functions
ENCRYPT torde dock bara funka på *NIX-system.
------------------
Before you criticize someone, walk a mile in his shoes. That way, if he gets angry, he'll be a mile away - and barefoot.
[Redigerat av spango den 20 jan 2002]
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å :)
------------------
Before you criticize someone, walk a mile in his shoes. That way, if he gets angry, he'll be a mile away - and barefoot.
använd denna:
$cpwd = crypt( $password, "ty" );
Den ska fungera bra vettu.. tror den e bäst..
------------------
.... Weii
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...).
------------------
Before you criticize someone, walk a mile in his shoes. That way, if he gets angry, he'll be a mile away - and barefoot.
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...
------------------
.... Weii
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?
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?
------------------
<A HREF="mailto:chavez@post.netlink.se">Mvh Chavez
</A> UIN: 73975020
jag kör linux, så jag använder gärna crypt(). men hur gör man?! :)
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).
------------------
Before you criticize someone, walk a mile in his shoes. That way, if he gets angry, he'll be a mile away - and barefoot.
[Redigerat av spango den 21 jan 2002]
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 ;)
------------------
Before you criticize someone, walk a mile in his shoes. That way, if he gets angry, he'll be a mile away - and barefoot.
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.