Forum » Server-Side scripting » Veilige manier om gebruikers over te zetten
Crime-ware dot nl
Berichten: 774
avatar
Offline Stuur privebericht
hallo leden van criminalspoint.

hoe kan ik alle leden in een keer een nieuwen codatie geven van wachtwoord veilig?


ik heb een database met meer dan 8.144 leden op al mijn websites.

de wachtoorden zijn al goed gecodeerd met zout en peper, maar nu wil ik de wachtwoorden allemaal te gelijk nogmaals dubbel coderen dus de oude codatie moet een nieuwen worden.

als voorbeeld neem ik

Code | Selecteer Alles
minimaliseren
1
2
3
4
$select mysql_query("SELECT * FROM `gebruikers` WHERE `ban`='0'");  
    
$gebruikers mysql_fetch_object($select);

mysql_query("UPDATE `gebruikers` SET `wachtwoord`='"md5(md5($gebruikers->wachtwoord)) ."'");


dit is een voorbeeld dus niet denken van kud zo een wachtwoord beveiligen terwijl ik ook lid ben van die site.
16-05-2011 17:23
Dit topic is 200 keer bekeken door 34 verschillende leden
Reacties op: "Veilige manier om gebruikers over te zetten"
1
Webdeveloper & Programmeu
Berichten: 1001
avatar
Online Stuur privébericht
een foreach waar je alle leden in op haalt en dan hier in zet je de qeury met de UPDATE ?
16-05-2011 17:29
Crime-ware dot nl
Berichten: 774
avatar
Offline Stuur privébericht
Quote: NielsB

een foreach waar je alle leden in op haalt en dan hier in zet je de qeury met de UPDATE ?


dit was een voorbeeld omdat ik geen idee heb hoe ik het doet
16-05-2011 17:31
Webdeveloper & Programmeu
Berichten: 1001
avatar
Online Stuur privébericht
nou de manier hoe jij het doet kan ook gewoon wanneer je dit in een loop gooit waar je alle gebruikers op haalt. Alleen zal het niet leuk zijn voor je load van je site dus wat je kan doen is het even offline op een local webserver te doen en daarna weer opnieuw op je site te gooien?

Verder zorg er voor dat je login etc wel allemaal zo ingesteld zijn dat je die md5 md5 checks erbij heb?

Of je laat alle gebruikers zelf een keer inloggen waardoor ze wachtwoord moeten veranderen en deze wordt dan weer opgeslagen met md5 md5.
16-05-2011 17:34
Informatica Student
Berichten: 1406
avatar
Online Stuur privébericht
Quote: NielsB

nou de manier hoe jij het doet kan ook gewoon wanneer je dit in een loop gooit waar je alle gebruikers op haalt. Alleen zal het niet leuk zijn voor je load van je site dus wat je kan doen is het even offline op een local webserver te doen en daarna weer opnieuw op je site te gooien?

Verder zorg er voor dat je login etc wel allemaal zo ingesteld zijn dat je die md5 md5 checks erbij heb?

Of je laat alle gebruikers zelf een keer inloggen waardoor ze wachtwoord moeten veranderen en deze wordt dan weer opgeslagen met md5 md5.


Denk dat dat laatste het fijnste werkt. Enkel is er natuurlijk weer het nadeel dat je het niet bij alle gebruikers gebeurd.
Wat je ook kan doen is:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
<?php
$select 
mysql_query("SELECT wachtwoord FROM gebruikers WHERE ban='0'"); 
$i 0;  
while(
$gebruiker mysql_fetch_assoc($select)) {
    switch(
$i) {
        case 
25sleep(3); $i 0; break;
        default: 
$i++; break;
    }
    
mysql_query("UPDATE gebruikers SET wachtwoord='"md5(md5($gebruikers['wachtwoord'])) ."'");
}
?>

Hierbij heb ik enkel gekeken naar de load van je server.
16-05-2011 18:13
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
Voordat je ook maar iets doet: zorg voor een backup.
Na het eten komt een edit...

Nieuwe reactie samengevoegd met originele reactie op 16.05.11 19:10:00:
Wat dacht je hier van:
Je upgrade de wachtwoorden wanneer er ingelogd word.
Hoe weet je of het wachtwoord al geüpgraded is?
Voeg een prefix toe aan de nieuwe hashes: nieuw-a844bf02d9763ca2b...

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
if (strpos($hash'nieuw-') !== 0)
{
    
// oude hash, upgrade tijd voor deze user.
    // je hebt toegang tot het plaintext password omdat de gebruiker probeert in te loggen
    // gebruik deze om een nieuwe hash te genereren
    // vergeet niet de 'nieuw-' prefix toe te voegen
}


http://github.com/shadowhand/bonafide
Het is een Kohana module, ik weet het.
Maar het gebruikt maar weinig Kohana dingen, het zou niet heel moeilijk horen te zijn om het naar plain PHP te porten, ik zou je daarbij kunnen helpen.
Het is een hashing abstractie module (met een ACL, vraag me niet waarom ) en werkt met prefixes maar is dynamischer en zit goed in elkaar.
16-05-2011 18:24
Reageer op: "Veilige manier om gebruikers over te zetten"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden