Ik ben een beetje verder gaan ratelen op het idee 'beveiliging en server interactie', hier even de ideeen uit de chat en mijn ideeen die later gekomen zijn. Ik post ze op het forum zodat iedereen mee kan redeneren om te zorgen dat hun favoriete site niet misbruikt wordt ... [/slijm-modus]
Allereerst kwam het idee om data van de client op te slaan op de server, zodat je, waar je ook zit, altijd dezelfde gegevens bij de hand hebt. Is op zich een leuk idee, maar vergt veel van de server, vooral als iedereen z'n complete cache gaat uploaden. Wat wel erg handig zou zijn is de mogelijkheid om tenminste op te slaan wanneer je laatste check was, zodat je als je bijvoorbeeld op je werk alle topics al langs hebt zien komen deze thuis niet nog een keer krijgt. Uiteraard moet je dat ook uit kunnen omdat je op je werk misschien de topics zelf niet leest en ze thuis alsnog wilt binnenhalen. Het idee om iets meer data op te kunnen slaan op de server is in ieder geval geen slecht idee...
Verder was mijn idee om dan eventueel een Import/Export functie in te bouwen die de data naar bijvoorbeeld een eigen FTP server kan uploaden of op een of andere manier verplaatsen zodat je in ieder geval client-specifieke data ook mee kan nemen tussen 2 locaties (denk in het geval van mijn client aan je favorieten)en de NLDelphi server minder belast is met deze data (die met flink wat gebruikers toch aardig op kan lopen).
In ieder geval heb je voor deze dingen een manier nodig om gebruikers te identificeren, dus zo kwam het idee om je inloggegevens in te moeten vullen in de client. Is technisch gezien zo in te bouwen en aangezien de mensen die baat hebben bij DeX toch al lid zijn maakt dat ook niet veel meer uit, maar het moet wel enigzins secure zijn, dus hier hetgeen wat ik zojuist bedacht heb onder de douche: (op een of andere manier komen daar mijn geniaalste ideeen vandaan )
Het paswoord van vBulletin is opgeslagen in een MD5 hash formaat (MD5: eenwegsencryptie, is alleen te decoden met brute force). Je zou de inloggegevens mee kunnen sturen in een GET of POST query (liever POST trouwens, komt de data niet in logs te staan) en op de client alvast MD5 encrypten om aftappen van verkeer te verhinderen. Probleem is, als iemand dan eenmaal die MD5 hash heeft afgetapt kunnen ze dat gebruiken om de client te misbruiken. Ze kunnen welliswaar het paswoord niet achterhalen, maar we willen toch het zekere voor het onzekere nemen...
Wat veel veiliger is is om nog steeds het paswoord op de client te encrypten en op te slaan (het hoeft toch niet te decrypten zijn), dan bij het uitvoeren van een query die string nemen en er de DateTime parameter die je meestuurt achteraan plakken, en dat vervolgens door MD5 heen te halen:
Code:StoredPass := MD5(InputPass); // Sla StoredPass eventueel op... Pass := MD5(StoredPass + IntToStr(DateTime));
Dat betekent dat als iemand het verkeer aftapt hij nog niks aan dit wachtwoord heeft, want de hash veranderd bij elke aanroep. Wat de server kan doen is het wachtwoord uit de db halen, dezelfde MD5(StoredPass + DateTime) uitvoeren en dat matchen.
Het meest onveilig in dit geval is het opslaan van het wachtwoord op de client, dat is de enige manier om met een client in te kunnen loggen. Voordeel van de hash opslaan is wel dat als iemand die gegevens heeft dat hij(/zij) ze nog niet kan decrypten en er dus hooguit mee kan inloggen via de client...
Je zou het wachtwoord alsnog kunnen encrypten, maar dan moet het decryptbaar zijn en heeft dus geen verdere waarde. Je moet ergens de grens leggen qua veiligheid. Je zou in de client het opslaan van het wachtwoord zelfs optioneel kunnen maken voor situaties waarin je een computer deelt o.i.d. (we nemen natuurlijk allemaal DeX mee naar internetcafe's in het buitenland , onee, tijdzone is dan anders, gaat DeX flippen...)
Maar goed, op deze manier heb je een redelijk betrouwbare manier van inloggen en kan je wat simpele data opslaan op de server (samen met checks of er niet elke seconde wordt gequeried), en kan je 't zelfs uitbreiden tot 'Check private messages' of andere ongein
Zo, weer veelsteveel getypt eigenlijk, maar goed, ik hoor wel wat jullie (en met name Marcel, die moet de server tenslotte updaten tegen die tijd ) ervan vinden...
Bookmarks