×

Help Tweakers weer winnen!

Tweakers is dit jaar weer genomineerd voor beste nieuwssite, beste prijsvergelijker en beste community! Laten we ervoor zorgen dat heel Nederland weet dat Tweakers de beste website is. Stem op Tweakers en maak kans op mooie prijzen!

Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Development-round-up - iteratie #4

Door , 19 reacties

29-08-2011 • 14:03

19 Linkedin Google+

En toen zat iteratie #4 er al weer op. Deze keer hebben we 52 tickets weggewerkt. De drie belangrijkste en meest zichtbare zaken zullen we even toelichten. :)

Wachtwoordopslag

Zoals iedereen ondertussen weet is het opslaan van wachtwoorden met md5 een sterk verouderde techniek. Net als bij allerlei andere sites heeft ook Tweakers.net eigenlijk niet de prioriteit gegeven aan de opslag van wachtwoorden die het verdient. Door de veranderingen in het development proces en de hoeveelheid aandacht die in het nieuws bestaat voor zwakke wachtwoordversleuteling kreeg het nu eindelijk meer prioriteit. We hebben ervoor gekozen om de huidige md5-hashes te vervangen door PBKDF2, een methode die door RSA Laboratories onder RFC2898 als standaard is voorgesteld voor diverse toepassingen waarbij een afgeleide sleutel van een wachtwoord langdurig opgeslagen moet worden. Om te voorkomen dat iedereen een nieuw wachtwoord moest invoeren hebben we die methode losgelaten op de bestaande md5-hashes. Daardoor zijn direct alle wachtwoorden veiliger opslagen, zonder enig overlast voor de bezoeker. Die md5-tussenstap is overigens tijdelijk, die verdwijnt als je opnieuw inlogt of je wachtwoord wijzigt. Verder slaan we nu veel meer metadata bij het wachtwoord op. Daardoor weten we later nog steeds hoe de sleutel was gegenereerd en kunnen we het wachtwoordalgoritme naar wens veranderen. Als we meer hash-iteraties of een ander hash-algoritme willen gebruiken, gaat dat geheel transparant. Want ook dan worden vanzelf de wachtwoorden opnieuw versleuteld bij het inloggen of wijzigen van een wachtwoord.

Nieuwe keurmerk logo's

Lange tijd lieten we alleen het Thuiswinkel Waarborg zien bij winkels in de Pricewatch. Er bestaan echter nog meer van deze keurmerken en zowel vanuit de winkels als vanuit de users is de vraag gekomen of we die niet ook kunnen tonen. Dat doen we nu. Er is echter wat beperkte ruimte in de tabellen op een prijspagina dus hebben we de de lijst onder een pop-up gehangen. We tonen het primaire logo en als daar overheen een plusje is afgebeeld, weet je dat je met een muisklik de rest van de keurmerken te zien kan krijgen.

Op dit moment ondersteunen we de volgende keurmerken: Thuiswinkel Waarborg, Webshop Keurmerk, ICT Waarborg en QShops. Wellicht dat daar in de toekomst nog meer bij komen, we hebben daar nu in ieder geval de ruimte voor. :)

Evenement videoblokje

Sinds de E3 tonen we bij grote evenmenten en beurzen een videoblokje voor zelf geproduceerde video's op de frontpage. Nu wil het toeval dat half september twee evenementen zijn waar Tweakers met een videoteam vertegenwoordigd is, namelijk Microsoft Build en het Intel Developer Forum. Dat zou betekenen dat we twee van deze videoblokjes zouden moeten tonen en dat vonden we zelf ook wel een beetje teveel van het goede. We hebben dus een manier bedacht om op de frontpage wel aandacht te kunnen besteden aan beide evenementen zonder dat daar ontzettend veel schermruimte voor moest worden ingeleverd. We zijn toen uitgekomen op een blokje in de stijl van de Meuktracker.

Zoals je ziet bestaat het blokje nu uit twee kolommen met in iedere kolom de video's van een van de evenementen. Door het kleine icoontje voor de titel is te zien dat het om een video gaat. Natuurlijk zorgen we er ook voor dat er weer een pagina is waarop alle content over deze evenementen verzameld is zodat de geïnteresseerde in één keer alles tot zich kan nemen. Precies zoals je van ons gewend bent. ;)

Kleine wijzigingen

De rest van de tickets waren een grote hoeveelheid kleine wijzigingen, optimalisaties en aanpassingen aan de backend. Misschien niet meteen dingen die we zo kunnen laten zien, maar wel die ervoor zorgen dat we jullie nog beter en sneller van het laatste nieuws kunnen voorzien. :)

Reacties (19)

Wijzig sortering
Mooi dat het nu nóg beter werkt. Natuurlijk ook leuk om te lezen hoe jullie dat oen met de wachtwoorden, maar blijven van gebruikers die niet meer inloggen de md5 hashes gewoon eeuwig staan, of gaan jullie de passwords van die mensen resetten op een zeker moment?
De md5-hashes zijn als onderdeel van deze upgrade direct niet meer als md5 in de database. Om nog wel te controleren of jouw wachtwoord overeen kwam met wat er ooit als md5 stond, hebben we het nu het equivalent van zoiets in de code: $hashInDb == nieuweHash(md5($wachtwoord) . $salt)

Maar dan zodanig dat ook de huidige methode (en evt deze md5-stap) nog weer als invoer kan gelden voor weer een nieuw algoritme :P

Maar je vraag over de hashes; die staan nu dus al niet meer in de db :)

Je hoeft dus ook niet opnieuw in te loggen om een lastiger te kraken wachtwoord in de database te krijgen, hoewel ie na opnieuw inloggen wel nog een heel klein beetje beter opgeslagen wordt.
Waarschijnlijk gaan we op een gegeven moment die passwords die nog steeds niet omgezet zijn wel resetten. Maar op welke termijn dat is, hebben we nog niet echt bedacht. Eerst maar eens kijken hoe het zo loopt. ;)
Maar.. maar.. als ik nu opnieuw ga inloggen, raak ik mijn sessie kwijt :'(
Een uitgebreid artikel gevonden over PBKDF2 vs bcrypt (crypt met blowfish)

http://security.stackexch...rypt-for-password-storage

bCrypt is makkelijker omdat de Salt al zit ingebakken, maar PBKDF2 wordt de NIST aanbevolen. Als je echt goed wilt zitten is PBKDF2 de aanrader, wil je iets gebruiken dat beter is dan MD5/SHA1 hash enkel dat is bcrpyt() aan te raden.

Overigens zie ik dat Tweakers voor de sessie nog wel gebruik maakt van md5 ;)
http://stackoverflow.com/...ession-fixation-hijacking
http://wblinks.com/notes/secure-session-management-tips

Voor de hash functie van de sessie maak ik zelf gebruik van whirlpool.

[Reactie gewijzigd door s.stok op 30 augustus 2011 13:54]

[...]
Overigens zie ik dat Tweakers voor de sessie nog wel gebruik maakt van md5 ;)
Waar maak je dat uit op?
Oeps daar ben ik iets vergeten :)
"Overigens zie ik dat Tweakers volgens mij voor de sessie nog wel gebruik maakt van md5 ;) "

Bij TnetID (cookies), ik weet niet zeker of dit de sessie is, maar het lijkt me haast van wel omdat de rest niet echt op een sessie-id lijkt.
We gebruiken geen md5 voor de sessie-id's; het is enkel een random hex-encoded string - of beter gezegd: was - nieuwe sessieid's bestaan tegenwoordig ook niet eens meer uit enkel hex-karakters ;)
Van toevallig ook 128 bits/32 hex-chars, dat dan weer wel :P Sinds de vorige iteratie is het inderdaad niet meer hex, maar base64 en daardoor in evenveel karakters nog wat meer entropy. Ik geloof dat we ongeveer 200M keer meer unieke sessie-ids kunnen genereren sinds die wijziging, niet dat 2^128 nou zo'n beperkt aantal is ;)
Leuk dat de hoeveelheid tickets die jullie afsluiten langzamerhand oploopt, stijgt dat jullie velocity ook mee? :) Het is leuk om elke keer die kleine updates te lezen, keep us posted! :)
We hebben aan het begin van de scrum-periode twee nieuwe mensen aangenomen, doordat zij nu beter ingewerkt raken stijgt inderdaad de velocity :)

Maar sowieso zegt het aantal tickets ook niet alles over de lengte ervan :P
Leuk om te lezen hoe tweakers omgaat met de "problematiek" rond het opslaan van wachtwoorden. Voorheen werden de wachtwoorden alleen dmv md5 versleuteld?

Zelf ben ik ook een tijdje aan het knutselen geweest en uiteindelijk uitgekomen op het Whirlpool algoritme. Deze versleutel ik dan samen met een salt. De salt prop ik ook nog eens "willekeurig" in het oorspronkelijke wachtwoord, om het aanleggen van Rainbow tabellen nog verder te bemoeilijken. Zie hier een voorbeeldje:


protected function create_password_hash($password, $password_salt) {

if(empty($password) || empty($password_salt)) { return false; }

$password = str_split($password,(strlen($password)/2)+1);
$hash = hash('whirlpool', $password[0].$password_salt.$password[1]);

return $hash;
}


Gebruiken jullie zelf ook een salt? Verder: keep up the good work! :Y)
Uiteraard gebruiken we een salt, is ook domweg onderdeel van de pbkdf2-specificatie :) Het hebben van salts is trouwens doorgaans een voldoende middel om rainbow-tabellen zinloos te maken. Je kan dan beter per wachtwoord domweg alles proberen dan het in een kruis-tabel tussen wachtwoorden en random salts in een database te stoppen. Een rainbow-tabel is sowieso al erg groot.
Mooi gemaakt dat evenement videoblokje, ik vind het er een stuk strakker uitzien dan het standaard videoblokje zoals die van de E3. Wat mij betreft mogen jullie voortaan deze vorm gebruiken, ik vind meestal de thumbnail niet zo veel zeggen, en met zo'n lijstje vind ik dat je meer overzicht hebt.
Trouwens leuk dat de updates nu steeds sneller komen, ik vind het wel leuk om zo elke 2 weken te lezen over kleinere updates.
Heel goed dat de wachtwoorden nu veilig worden opgeslagen, nu nog het veilig overzenden van de sessie cookie.
En mixed content (ic.tweakers.net) werkt nog niet zoals zou moeten.
Werken jullie ook nog steeds met challenge/reponse bij het inloggen dan? Het is natuurlijk eenvoudig om dat te implemeteren als je met md5 de wachtwoorden opslaat, maar hoe je dat doet met PBKDF2 is me niet helemaal duidelijk :)
Wat bedoel je precies met challenge/reponse?
Een tour van het T.net kantoor en van de backend softawre, dat zou vet zijn *droomt verder*

Mooi dat jullie sneller updaten en sneller werken :D

Op dit item kan niet meer gereageerd worden.


Apple iPhone X Google Pixel 2 XL LG W7 Samsung Galaxy S8 Google Pixel 2 Sony Bravia A1 OLED Microsoft Xbox One X Apple iPhone 8

© 1998 - 2017 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Hardware.Info de Persgroep Online Services B.V. Hosting door True

*