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

Door , , 19 reacties

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.

Winkelkeurmerken in de Pricewatch

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.

Videoaankondigingen FP

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. :)

Door Robert Bouma

- Scrum Master

Sinds 2007 ben ik werkzaam bij Tweakers als allround webdeveloper. Ook heb ik me bezig gehouden met de iOS app, hoewel die ondertussen al weer ter ziele is gegaan. Vanaf 2015 ben ik werkzaam als Scrum master van het development team. Niet alleen bij Tweakers maar ook de teams van o.a. Intermediair, Nationale Vacaturebank en IT Banen

Volg Robert op TwitterVolg Robert op Google+
Moderatie-faq Wijzig weergave

Reacties (19)

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 iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True