Verktyg Visningsval
2012-04-12, 01:38   #1

GuiceU

Medlem

GuiceUs avatar

Plats: Falun

Registrerad: nov 2011

"kryptera" mysql lösenord?


Hej! Har nu lärt mig lite mysql och php. Så jag kom att tänka på: hur "krypterar" man lösenordet på databasen? Ett exempel:

$password = 'test';
$host = 'test';
$username = ' test';

Då skulle nån ju bara kunna kolla källkoden och ansluta sig till min mysql bas... så ja, hur "krypterar" man lösenordet?( möjligtvis ert andra också men först lösenordet) har googlat men fick inge bra svar.

Tack i förväg!

Skickades från m.sweclockers.com
__________________
Coola kids kan aldrig dö men för mig kan dom göra ett undantag.

Suit up and be awesome.
GuiceU är inte uppkopplad
2012-04-12, 02:00   #2

Be4ten

Medlem

Be4tens avatar

Plats: Karlstad

Registrerad: sep 2003

http://en.wikipedia.org/wiki/Client-side_scripting vs http://en.wikipedia.org/wiki/Server-side_scripting

Hehe, har du någonsin försökt att hitta din PHP kod genom visa källkod? Då märker du ganska snabbt att du inte ser någon php överhuvudtaget. Detta beror på att PHP endast kommunicerar med servern och når därför aldrig användarens webbläsare. Därför behöver man inte heller kryptera användarnamnet och lösenordet. Enda scenariot jag kan tänka mig är om någon skulle komma åt din webbserver och plocka ner filerna. Men då är det ju redan ganska kört..
Be4ten är inte uppkopplad
2012-04-12, 02:05   #3

GuiceU

Medlem

GuiceUs avatar

Plats: Falun

Registrerad: nov 2011

Hehe... faktiskt inte :/ har inte tänkt på det... Sjä, tack for ditt svar!

Skickades från m.sweclockers.com
__________________
Coola kids kan aldrig dö men för mig kan dom göra ett undantag.

Suit up and be awesome.
GuiceU är inte uppkopplad
2012-04-12, 04:00   #4

Snacker

Medlem

Snackers avatar

Plats: Umeå

Registrerad: aug 2011

Tycker ändå det är värt att köra kryptering, skadar ju knappast?
Du kan ju köra med t.ex. hash ('sha256', $password);

Annars brukar jag använda nån kod som liknar det här för att hasha:
function generate_string ($minimum_length$maximum_length)
{
    
// Array containing different characters
    
$chars = array('A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z',
                   
'a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z',
                   
'0''1''2''3''4''5''6''7''8''9',
                   
'!''.''@''%''&''/''['']''-''#''('')''=''\\''{''}''?''+''€''$''^''£''<''>''|'',''*');
    
$size count ($chars); // Count amount of characters
    
$string '';
    
$length mt_rand ($minimum_length$maximum_length); // Get a random length
    // Now build a string of random characters
    
for ($i=1$i<=$length$i++) {
        
$string .= $chars[mt_rand(0$size 1)];
    }
    return 
$string;
}

function 
hash_password ($password$salt)
{
    
// Split the password in two, and have the salt between those two (increases security)
    
$string_length round (strlen ($password) / 2);
    
$password_and_salt substr ($password$string_length) . $salt substr ($password0$string_length);
    return 
hash ('sha512'$password_and_salt); // And now hash it, using a strong hash like sha512, sha256 or whirlpool
}

$salt generate_string (1632);
$hashed_password hash_password ($password$salt); 
Salt läggs till själva lösenordet för att förstärka säkerheten.

Säger inte att det krävs så här kraftig kryptering, eller om ens något, men det är en god vana som knappast skadar.
__________________
Stationär: CM Storm Scout 2 | MSI Z77A-S03 | Intel i5 3570k | ASUS GeForce GTX 660Ti | 2x4 GB DDR3 1333 MHz | Samsung 120 GB SSD | Seagate 2TB HDD | be quiet! 630W PSU | W7 HP
Laptop: ASUS X72J Series | Intel i3-330M 2,13 GHz | 2x2GB DDR3 1333 MHz | Seagate 500 GB SATA2 5400rpm | ATI Mobility Radeon HD 5470 1 GB
Krignutrustning: Logitech G400 | Mionix Keid 20 | Microsoft Basic Keyboard 1.0A
Snacker är inte uppkopplad
2012-04-12, 07:22   #5

havsmonstret

Medlem

havsmonstrets avatar

Plats: Linköping

Registrerad: apr 2010

Citat:
Ursprungligen inskrivet av Snacker Visa inlägg
Tycker ändå det är värt att köra kryptering, skadar ju knappast?
Du kan ju köra med t.ex. hash ('sha256', $password);

Annars brukar jag använda nån kod som liknar det här för att hasha:
function generate_string ($minimum_length$maximum_length)
{
    
// Array containing different characters
    
$chars = array('A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z',
                   
'a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z',
                   
'0''1''2''3''4''5''6''7''8''9',
                   
'!''.''@''%''&''/''['']''-''#''('')''=''\\''{''}''?''+''€''$''^''£''<''>''|'',''*');
    
$size count ($chars); // Count amount of characters
    
$string '';
    
$length mt_rand ($minimum_length$maximum_length); // Get a random length
    // Now build a string of random characters
    
for ($i=1$i<=$length$i++) {
        
$string .= $chars[mt_rand(0$size 1)];
    }
    return 
$string;
}

function 
hash_password ($password$salt)
{
    
// Split the password in two, and have the salt between those two (increases security)
    
$string_length round (strlen ($password) / 2);
    
$password_and_salt substr ($password$string_length) . $salt substr ($password0$string_length);
    return 
hash ('sha512'$password_and_salt); // And now hash it, using a strong hash like sha512, sha256 or whirlpool
}

$salt generate_string (1632);
$hashed_password hash_password ($password$salt); 
Salt läggs till själva lösenordet för att förstärka säkerheten.

Säger inte att det krävs så här kraftig kryptering, eller om ens något, men det är en god vana som knappast skadar.
Om nu någon får tag på php filen kvittar det ju om du kör hash() på det eller inte innan du ansluter till databasen, lösenordet står ju fortfarande i filen...
havsmonstret är inte uppkopplad Folding
2012-04-12, 08:30   #6

mounte

Medlem

Plats: Sandviken

Registrerad: mar 2005

Till att börja med så är sha256 också en metod för hashning.
Hashning innebär att: givet en serie av data, godtyckligt lång, producera en ny serie av data med en bestämd längd på ett sådant sätt att man minimerar risken att få kollision (strängen "test" hashas kanske till "b0c3", man vill då helst inte att "hejsan hoppsan" ska hashas till "b0c3" också), det ska vara svårt att göra motsatsen (dvs givet "b0c3" lista ut att inkommande sträng var just "test"). Vidare så vill man att det ska gå snabbt att räkna ut en hash. En till önskvärd egenskap är att en liten ändring i den inkommande datan ska generera en stor förändring i hashen (t.ex. så är dett bra: "test" ==> "b0c3", "tess" ==> "19fc" medans om säg "tess" hade hashats till "b0c2" så hade det varit illa).

Som du kanske märker så är det omöjligt att undgå krockar. Om du har en hash med 256 bitars längd så motsvarar detta ca 1.2*10^77 olika kombinationer. Detta kan du ju jämföra med låt säga hashning av textdokument (som bara inneåller små och stora bokstäver samt siffror, dvs ca 66 olika tecken) med en längd på 42 tecken, redan antalet av sådana dokument blir 1.7*10^78. Alltså VET vi att hashning av alla möjliga 42-teckens-dokument kommer att leda till en krock (någon gång, någon stans) sannolikheten är liten, men den finns. Men nu hashas ju inte enbart 42-teckens-dokument utan det är godtycklig längd, så ATT det någon gång krockar är oundvikligt man vill dock minimera sannolikheten för en krock.

Det hashning skyddar mot direkt är att någon skulle komma åt din databas med användaruppgifter och lösenord. Om dessa finns i klartext så är det ju redan kört men om alla lösenord är hashade så har tjyven följande problem att lösa:
HASH( password ) = lösenord-lagrat-i-databasen, han/hon måste alltså finna ett sätt att gå från det lagrade lösenordet till det som användarn valde, password. Men detta var ju precis ett av kriterierna för en hash-funktion, svårt att gå tillbaka.

Gällande inloggningen till den faktiska databasen där du var orolig för lösenord och användarnamn kan jag bara ge följande råd:
1) Skapa individuell användare i databasen som bara har rätt att hantera den specifika databasen/databaserna för applikationen i fråga
2) Lås ner möjligheterna att logga in från externa siter genom att kräva att denna användare bara får logga in via localhost (den egna maskinen)

Lycka till med allt
__________________
Besök gärna: www.wedlund.eu
Tips på vps:
mounte är inte uppkopplad
2012-04-12, 11:18   #7

GuiceU

Medlem

GuiceUs avatar

Plats: Falun

Registrerad: nov 2011

Citat:
Ursprungligen inskrivet av Snacker Visa inlägg
Tycker ändå det är värt att köra kryptering, skadar ju knappast?
Du kan ju köra med t.ex. hash ('sha256', $password);

Annars brukar jag använda nån kod som liknar det här för att hasha:
function generate_string ($minimum_length$maximum_length)
{
    
// Array containing different characters
    
$chars = array('A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z',
                   
'a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z',
                   
'0''1''2''3''4''5''6''7''8''9',
                   
'!''.''@''%''&''/''['']''-''#''('')''=''\\''{''}''?''+''€''$''^''£''<''>''|'',''*');
    
$size count ($chars); // Count amount of characters
    
$string '';
    
$length mt_rand ($minimum_length$maximum_length); // Get a random length
    // Now build a string of random characters
    
for ($i=1$i<=$length$i++) {
        
$string .= $chars[mt_rand(0$size 1)];
    }
    return 
$string;
}

function 
hash_password ($password$salt)
{
    
// Split the password in two, and have the salt between those two (increases security)
    
$string_length round (strlen ($password) / 2);
    
$password_and_salt substr ($password$string_length) . $salt substr ($password0$string_length);
    return 
hash ('sha512'$password_and_salt); // And now hash it, using a strong hash like sha512, sha256 or whirlpool
}

$salt generate_string (1632);
$hashed_password hash_password ($password$salt); 
Salt läggs till själva lösenordet för att förstärka säkerheten.

Säger inte att det krävs så här kraftig kryptering, eller om ens något, men det är en god vana som knappast skadar.
Tack för koden! Men säger som Havsmonstret gjorde, lösenordet står ju fortfarande i filen....



Citat:
Ursprungligen inskrivet av mounte Visa inlägg
Till att börja med så är sha256 också en metod för hashning.
Hashning innebär att: givet en serie av data, godtyckligt lång, producera en ny serie av data med en bestämd längd på ett sådant sätt att man minimerar risken att få kollision (strängen "test" hashas kanske till "b0c3", man vill då helst inte att "hejsan hoppsan" ska hashas till "b0c3" också), det ska vara svårt att göra motsatsen (dvs givet "b0c3" lista ut att inkommande sträng var just "test"). Vidare så vill man att det ska gå snabbt att räkna ut en hash. En till önskvärd egenskap är att en liten ändring i den inkommande datan ska generera en stor förändring i hashen (t.ex. så är dett bra: "test" ==> "b0c3", "tess" ==> "19fc" medans om säg "tess" hade hashats till "b0c2" så hade det varit illa).

Som du kanske märker så är det omöjligt att undgå krockar. Om du har en hash med 256 bitars längd så motsvarar detta ca 1.2*10^77 olika kombinationer. Detta kan du ju jämföra med låt säga hashning av textdokument (som bara inneåller små och stora bokstäver samt siffror, dvs ca 66 olika tecken) med en längd på 42 tecken, redan antalet av sådana dokument blir 1.7*10^78. Alltså VET vi att hashning av alla möjliga 42-teckens-dokument kommer att leda till en krock (någon gång, någon stans) sannolikheten är liten, men den finns. Men nu hashas ju inte enbart 42-teckens-dokument utan det är godtycklig längd, så ATT det någon gång krockar är oundvikligt man vill dock minimera sannolikheten för en krock.

Det hashning skyddar mot direkt är att någon skulle komma åt din databas med användaruppgifter och lösenord. Om dessa finns i klartext så är det ju redan kört men om alla lösenord är hashade så har tjyven följande problem att lösa:
HASH( password ) = lösenord-lagrat-i-databasen, han/hon måste alltså finna ett sätt att gå från det lagrade lösenordet till det som användarn valde, password. Men detta var ju precis ett av kriterierna för en hash-funktion, svårt att gå tillbaka.

Gällande inloggningen till den faktiska databasen där du var orolig för lösenord och användarnamn kan jag bara ge följande råd:
1) Skapa individuell användare i databasen som bara har rätt att hantera den specifika databasen/databaserna för applikationen i fråga
2) Lås ner möjligheterna att logga in från externa siter genom att kräva att denna användare bara får logga in via localhost (den egna maskinen)

Lycka till med allt
Tack så mycket! Jag hänger med på det du skrev, så nu förstår jag det bättre!
GuiceU är inte uppkopplad
2012-04-12, 14:42   #8

Snacker

Medlem

Snackers avatar

Plats: Umeå

Registrerad: aug 2011

Citat:
Ursprungligen inskrivet av havsmonstret Visa inlägg
Om nu någon får tag på php filen kvittar det ju om du kör hash() på det eller inte innan du ansluter till databasen, lösenordet står ju fortfarande i filen...
Om man använder metoderna jag skrev ovan och ingen modifierar filerna blir brute force enda sättet att ta reda på dem. Då gäller det i slutändan att användaren valt ett starkt lösenord och att man har en långsam hashmetod.

Ifall det värsta händer och nån får tillgång till alla hashade lösenord, är det säkrare med långsamma hashmetoder då det tar längre tid att få reda på det riktiga lösenordet.

Du bör alltså se till att användarna har ett någorlunda starkt lösenord, och att allt saltas och hashas med bra metoder.

EDIT: Sorry! Var trött när jag skrev båda svaren och läste frågan. Läste fel och tar tillbaka allt
Trodde du ville kryptera en användares lösenord xD

Skickades från m.sweclockers.com

Senast redigerad av Snacker 2012-04-12 klockan 14:51.
__________________
Stationär: CM Storm Scout 2 | MSI Z77A-S03 | Intel i5 3570k | ASUS GeForce GTX 660Ti | 2x4 GB DDR3 1333 MHz | Samsung 120 GB SSD | Seagate 2TB HDD | be quiet! 630W PSU | W7 HP
Laptop: ASUS X72J Series | Intel i3-330M 2,13 GHz | 2x2GB DDR3 1333 MHz | Seagate 500 GB SATA2 5400rpm | ATI Mobility Radeon HD 5470 1 GB
Krignutrustning: Logitech G400 | Mionix Keid 20 | Microsoft Basic Keyboard 1.0A
Snacker är inte uppkopplad
2012-11-13, 03:20   #9

K.L

Medlem

Registrerad: sep 2012

Jag lånar tråden här Om jag vill kryptera användarens lösenord så det inte visas i klartext i databasen ifall nån skulle komma åt den. Hur skriver man en sån kod att när folk registrerar sig så krypteras lösenordet i databasen? Vilket är det starkaste och stabilaste sättet att göra det här?

Jag är väldigt ny inom det här och försöker bara lära mig. Har inte så bra koll på sånt här.
K.L är inte uppkopplad
2012-11-13, 05:40   #10

matti4s

Medlem

matti4ss avatar

Plats: @home

Registrerad: maj 2005

Citat:
Ursprungligen inskrivet av K.L Visa inlägg
Jag lånar tråden här Om jag vill kryptera användarens lösenord så det inte visas i klartext i databasen ifall nån skulle komma åt den. Hur skriver man en sån kod att när folk registrerar sig så krypteras lösenordet i databasen? Vilket är det starkaste och stabilaste sättet att göra det här?

Jag är väldigt ny inom det här och försöker bara lära mig. Har inte så bra koll på sånt här.
Du vill nog inte kryptera lösenordet, finns ju ingen mening för dig att kunna bakvänt ta fram användarnas lösenord igen.

Det du vill göra är att ta lösenordet som användaren väljer, hasha (och eventuellt salta) detta och sedan sätta in den hashade versionen i databasen. När användaren sedan loggar in så jämför du en hashad version av det användaren matat in för inloggning med det du har i databasen.

Finns en mängd olika hashningsalgoritmer att välja på, vissa såklart starkare än andra.
__________________
I'm Winston Wolfe. I solve problems.
matti4s är inte uppkopplad
2012-11-13, 06:04   #11

K.L

Medlem

Registrerad: sep 2012

Citat:
Ursprungligen inskrivet av matti4s Visa inlägg
Du vill nog inte kryptera lösenordet, finns ju ingen mening för dig att kunna bakvänt ta fram användarnas lösenord igen.

Det du vill göra är att ta lösenordet som användaren väljer, hasha (och eventuellt salta) detta och sedan sätta in den hashade versionen i databasen. När användaren sedan loggar in så jämför du en hashad version av det användaren matat in för inloggning med det du har i databasen.

Finns en mängd olika hashningsalgoritmer att välja på, vissa såklart starkare än andra.
Ok. Då är det hasha jag menar. Vet iaf inte hur jag ska gå tillväga för och göra det samt vilket som blir starkast. Hoppas nån vänlig själ orkar visa hur det går till
K.L är inte uppkopplad
2012-11-13, 07:36   #12

elius

Medlem

eliuss avatar

Plats: Hästveda

Registrerad: apr 2006

Citat:
Ursprungligen inskrivet av K.L Visa inlägg
Ok. Då är det hasha jag menar. Vet iaf inte hur jag ska gå tillväga för och göra det samt vilket som blir starkast. Hoppas nån vänlig själ orkar visa hur det går till

Använd tex sha256 för att hasha och ta en slumpad sträng som salt. Ännu bättre blir det om du gör ett unikt salt för varje användare.

Skickades från m.sweclockers.com

Senast redigerad av elius 2012-11-13 klockan 07:39.
__________________
Intel i7 2600K @ 4.5GHz | GeForce GTX 680 | ASUS P8P67 PRO | Corsair Dominator 16GB 1600MHz | Samsung 830 256GB
elius är inte uppkopplad Folding
2013-03-17, 22:12   #13

BLundFtw

Medlem

Registrerad: feb 2012

MD5 kanske?

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

<?php

if (isset($_POST['submit'])) {

$username $_POST['username']; 
$password $_POST['password']; 

if (
$username&&$password) { 
$securePassword md5($password); 

// Anslut till databas och kolla om om $securePassword finns som MD5 

echo '
        Det lösenord du skrev: <strong>'
$password .'</strong>
    <br>
        Det lösenord du skrev, fast i MD5: <strong>'
$securePassword .'</strong>
    '
;

} else {
// Fel lösenord echoas här
echo '
        Det lösenord du skrev: '
$password .'
    <br>
        Lösenordet du skrev i MD5: '
$securePassword .'
    '
;
}

} else { 
echo 

<p>Log in to the website</p> 
<form action="index.php" method="POST"> 
  <input type="username" placeholder="Your username" name="username"> 
<br> 
  <input type="password" placeholder="Your password" name="password"> 
<br> 
<br> 
  <input type="submit" name="submit" value="Log in"> 
</form> 
'

}

?>
BLundFtw är inte uppkopplad
2013-03-18, 11:32   #14

jonke

Medlem

Plats: Malmö

Registrerad: okt 2002

Citat:
Ursprungligen inskrivet av BLundFtw Visa inlägg
MD5 kanske?

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

<?php

if (isset($_POST['submit'])) {

$username $_POST['username']; 
$password $_POST['password']; 

if (
$username&&$password) { 
$securePassword md5($password); 

// Anslut till databas och kolla om om $securePassword finns som MD5 

echo '
        Det lösenord du skrev: <strong>'
$password .'</strong>
    <br>
        Det lösenord du skrev, fast i MD5: <strong>'
$securePassword .'</strong>
    '
;

} else {
// Fel lösenord echoas här
echo '
        Det lösenord du skrev: '
$password .'
    <br>
        Lösenordet du skrev i MD5: '
$securePassword .'
    '
;
}

} else { 
echo 

<p>Log in to the website</p> 
<form action="index.php" method="POST"> 
  <input type="username" placeholder="Your username" name="username"> 
<br> 
  <input type="password" placeholder="Your password" name="password"> 
<br> 
<br> 
  <input type="submit" name="submit" value="Log in"> 
</form> 
'

}

?>
Att bara köra MD5 på lösenordet innan det lagras i databasen är inte att rekommendera. (om man ens ska använda MD5 över huvudtaget?)
Det måste på en salt (gärna 2, en unik per användare och en gemensam för alla) för att lösenorden ska vara hyffsat säkra. En förvrängning av lösenordet är inte heller helt fel.
jonke är inte uppkopplad
2013-03-18, 11:42   #15

inquam

Medlem

Plats: Karlskrona

Registrerad: aug 2009

Alltså jag tolkar den ursprungliga frågan som att den rör användarnamn och lösenord på den användare på systemet som ansluter till mysql. Dvs, det lösenord han pratar om är det som krävs för att han skall kunna koppla upp sin applikation mot sin mysql databas. Inte användarnas enskillda lösenord. Rätta mig om jag har fel.

Om detta är vad det handlar om så finns det inget "inbyggt" i PHP/MySQL för att göra detta. Utan MySQL behöver användarnamn och lösenord av dig. Du skulle kunna skapa en liten applikation som fungerar som en pipe och som du har någon form av kryptering mellan som den kan avkryptera och ansluta mot MySQL och sedan går all kommunikation genom den mellan din applikation och databasen. Dock rätt rörigt.

Se bara till att din server är så säker som möjligt, kör inte anslutningen från din applikation till databasen som root eller någon annan användare med mer priviliegier än just din applikation kräver osv. Tar du dagliga backuper på applikationens databas då så är du iaf lite skyddad om något skulle hända och någon kommer åt lösenordet. I så fall tappar du MAX en dag, ingen annan databas påverkas då det inte finns privilegier att pilla på dem och du kan sedan luska ut hur någon kom över lösenordet, täppa till det hålet och återställa din backup.
__________________
Asrock P67 Extreme4 rev3 | 32gb DDR3 2400MHz | i7 2600K | 2 x R9 290 Crossfire | Nvidia 3D Vision | 2 x Corsair Force 3 128GB i RAID0 | 1 x 1TB WD
Bärbara: Macbook Pro 17", Asus netbook, HP EliteBook 8540p, Dell Latitude E5510
HTPC/Media: Asus Eee Box EB1501P, BoxeeBox, AMD X2 4500+ med XBMC, 2 x XBox 360 + Kinect
Server: #1 (Amahi) q6600, 8GB ram, 12TB disk|#2 Scaleo Home Server (Ubuntu) som TV server
inquam är inte uppkopplad
2013-03-18, 12:14   #16

edgren

Medlem

edgrens avatar

Plats: Skoghall

Registrerad: jan 2004

Citat:
Ursprungligen inskrivet av BLundFtw Visa inlägg
MD5 kanske?

...
MD5 går att knäcka och lösenord ska ju inte kunna ses av andra, eller hur? Whirlpool däremot är (vad jag vet) än i dag oknäckbar, så jag rekommenderar den hash-tekniken framför ditt val. Jag vet inte hur många lösenord som har spridits i klartext, på grund av mitt val av MD5 som hash-teknik -.-

hash('Whirlpool''mitt-losenord'); 
__________________
~ Vänligen citera mig, om du vill få ett snabbare svar | Jag har Aspergers syndrom ~
Om mig . Mina datorer . Mitt Steam-konto . Mitt galleri . Vädret just nu . Facebook . Google+
edgren är uppkopplad nu
2013-03-18, 13:09   #17

buddaz

Medlem

buddazs avatar

Plats: Dalarna

Registrerad: sep 2010

SHA-3 , låter intressant däremot är det rena grekiskan för min del
http://csrc.nist.gov/groups/ST/hash/...rdization.html
buddaz är inte uppkopplad
2013-03-18, 14:53   #18

lz.

Medlem

Registrerad: mar 2013

Det går att få fram lösenordet för alla algoritmer för eller senare. Det viktiga är att välja en hash algoritm vars kryptoanalytiska komplexitet är så hög att den är så gott som dessa som vad man skulle ha vid "exhaustive search".

Helst ska även algoritmen vara långsam så det ska tar tid att prova sig fram också.
MD5, SHA-1,2,3, osv är alla designade för att vara snabba. Vilket gör dem mindre lämnade för lösenord.

Förslagvis används en långsammare algoritm t.ex. bcrypt (standard för http://php.net/manual/en/function.password-hash.php) eller PBKDF2 (http://php.net/manual/en/function.hash-pbkdf2.php). Det tredje alternativet är att bara göra det väldigt drygt att prova sig fram till lösenordet genom att göra det genom samma algoritm flera gånger.

T.ex. ta lösenordet genom SHA-1 10000 gånger, samt använd ett unikt "salt" för varje lösenord så att förgenererade ordböcker (https://en.wikipedia.org/wiki/Rainbow_table) blir värdelösa.

Angående orginalfrågan med inloggningsuppgifterna för mysql:

Så skriv dem i en separat fil. Lägg denna utanför www root katalogen för sidan och sätt rättigheten så det bara är ägaren som får läsa filen, se sedan till att webservern kör sajten som den ägaren.

t.ex. om wwwrooten är /srv/www/domain.com/web lägg dina inloggninguppifter i /srv/www/domain.com/mysql-connection-params.php eller något. och se till att ingen annan än ägaren får läsa den.
lz. är inte uppkopplad
Senaste nyheterna

Redaktionens senaste nyhetsrubriker

Sök jobb