Er wordt WEL gebruik gemaakt van salting, maar blijkbaar kan jij niet zo goed code lezen.
Ik kan prima code lezen, maar gezien het totale gebrek aan structuur en kwaliteit kan je niet verwachten dat dit met één opslag duidelijk is. OK, je gebruikt iets dat lijkt op salting
https://github.com/hsleis...8/libraries/user.php#L139
Een gebruikersnaam, nee dat is lekker random zeg.
Toegegeven PostgreSQL gebruikt dit ook maar als die template0 word gehackt heb je wel een groter probleem
Daarnaast gebruik je dan nog steeds geen gebruik van iteration.
http://security.stackexch...-when-using-pkbdf2-sha256
https://www.owasp.org/ind...e_Cheat_Sheet#Work_Factor
https://www.owasp.org/ind..._credential-specific_saltJe remote-timing attack is niet waar, dus die mag je even toelichten.
Nee doe je maar toelichten (nee ik DAAG JE UIT) waarom dit zogenaamd niet waar is

je gebruikt wel is waar een hash om te vergelijking dus hebben deze een constante lengte maar een remote timming attack gaat veel verder dan dat, intern word bij het vergelijking gestopt op het eerste verschil.
http://blog.ircmaxell.com/2014/11/its-all-about-time.html
Zelf een theoretische aanval is genoeg reden om dit serieus te nemen, als je echt zoveel om beveiliging geeft als je zegt, denk je hier niet zo licht over.
Je mag mijn code spaghetti code vinden, maar er zit een duidelijke structuur in en netjes volgens MVC. Je bewering is niet meer dan een niet onderbouwde goedkope flame, die negeer ik dus maar.
https://github.com/hsleis...ibraries/user.php#L32-L42 lekkere MVC structuur, je HTTP laag (Controller) is compleet verweven met het security systeem. MVC is meer dan een View map,
Ik zag in een ander bericht dat je op ZendFramework 2.0 zat af te geven omdat er zogenaamd geen MVC structuur is. Guess what, MVC Is een design pattern geen mappen structuur... MVC gaat over het scheiden van gedrag en presentatie, het is een ideaal (een denkwijze), als je dit al een flame vindt.
Voor de duidelijkheid.
http://framework.zend.com...dules/zend.mvc.intro.htmlOveral en nergens aan file logging? Waar heb je het over? Ook graag toelichten.
https://github.com/hsleis...ibraries/banshee.php#L174
https://github.com/hsleis...8/libraries/user.php#L349
https://github.com/hsleis...tabase_connection.php#L48
Geen centraal systeem voor loggen, dus niet te vervangen met een andere oplossing.
Mede omdat de class final is (alleen een opmerking geen flame. dit just een goed iets

).
https://github.com/hsleis...8/libraries/error.php#L93
Heerlijk, wie wil er nu niet begroet worden met 500 mails omdat je er één foutje in de code zit.
Alleen in een nood situatie zoals een fatale database fout zou ik een mail willen ontvangen.
Global scope variables zijn volgens jou een recept voor problemen, maar niet in Banshee. Het gaat namelijk slechts om een paar globale configuratie variabelen. Hoor graag je concrete bewijs waarom dat volgens jou wel een security issue is. Desondanks ben ik zelf ook niet zo'n liefhebber van globals, dus in de komende versie zijn die er al uitgehaald.
Niet in Banshee nee, maar Banshee is (aldus de website) een Framework! Je kan niet voorspellen hoe mensen jouw code gaan gebruiken één global variabel die door iemand verkeerd word gebruikt kan het hele systeem kapot maken. Of dat je zelf een nieuwe global variabel introduceert (die al door iemand word gebruikt in zijn eigen code), je code is niet langer te voorspellen. Met een goed gestructureerde class kan je precies bepalen wat er gebeurd, iedere class resulteert in een uniek object. Dat object doet (mits goed geprogrammeerd) één ding en niks meer, globals werken ook buiten de class zelf door. Waarom denk je dat PHPUnit de mogelijkheid heeft om ze terug te kunnen zetten? Omdat ze voor onverwacht gedrag zorgen!
Je hebt de kracht van classen en objecten, dus waarom zou je vandaag de dag nog globals gebruiken? Dit had je allang op kunnen lossen (ik ken dit project al langer dan gisteren).
Een global vervangen voor een injected service (perfect), maar gebruik dan wel iets van interfaces of class type hinting.
https://github.com/hsleis...98/libraries/user.php#L25 je kan niet nog steeds niet volledig vertrouwen op het ontvangen van het juiste object.
Over je push_array en in() opmerking: leuk geprobeerd, maar zo lang Banshee nog steeds sneller is dan Wordpress, lijkt me dat niet zo'n issue.
Klein of niet het is een issue (en makkelijk op te lossen dus waarom zou je tijd verdoen met dit verdedigen. Daarnaast heb ik een keer in phpBB meegemaakt dat de query de mist in ging door te veel OR cases), daarnaast is Wordpress wel wat uitgebreider dan dit systeem.
Zo is een statische HTML sneller dan een dynamische website.
Wil je perse een CMS project hebben dat wel kwalitatief in elkaar is gezet?
https://github.com/pagekit/pagekit
- Gebouwd op moderne beproefde standaarden.
- Unit tested
- Modulair dus makkelijk uit te breiden en aan te passen.
- Gestandaardiseerde logging oplossing (PSR-3)
Vergelijk DIT is met Banshee of Wordpress

Het wel of niet gebruiken van "===" is niet inconsistent, maar bewust wel of niet gedaan. Leer eerst eens goed PHP voordat je dit soort onzin commentaar geeft. En wijs anders maar aan waar het fout gaat.
0 == 'foo' is true (BOEM!), het advies is om altijd een stricte vergelijking te gebruiken omdat je zo problemen voorkomt voordat ze gebeuren. Voorkomt overigens ook problemen zoals dit:
http://www.pfz.nl/forum/t...se-of-undefined-constant/
De hoofdregel voor leesbare en voorspelbare code is consistentie en eenzijdigheid. Had overigens nog niet gehad over je styling, soms staat return op een eigen regel en soms niet, zeur ik? misschien maar één van de renen waarom andere voor Ruby of Python is kiezen is dat leesbaarheid al onderdeel is van de taal zelf, in Python kan je niet alles op één regel kwakken en hopen dat het werkt, PHP, C en vele andere hebben dit niet en juist daarom moeten we erop letten dit zelf toe te passen! Of je nu 2 spaties gebruikt voor een tab of 4 spaties, of dat je { altijd op zijn eigen regel plaats of alleen scope blokken zoals functies/classen, doe het consistent. En dat is iets waar Wordpress het toch echt beter doet dan jij

Leuke poging tot het leveren van kritiek, maar je punten zijn nogal magertjes, niet onderbouwd en behoorlijk subjectief. Als je qua kritiek niet met iets beters kan komen dan dit, dan heb ik met Banshee dus iets goeds neergezet. Dank voor je bevestiging.
"Als je qua kritiek niet met iets beters kan komen dan dit", hoor wie het zegt

je promoot alleen maar je eigen project omdat Wordpress niks is en vergelijkt dan ook nog is een complete CMS oplossing met een simpel statisch structuur systeem.
"Dank voor je bevestiging."
Ik bevestig helemaal niks

, dat is jouw idee, kennelijk ben je al net zo goed in lezen dat je bent in overzichtelijk programmeren
Was ik nog vergeten te melden.
- Geen unit tests, hoewel gezien de structuur van dit systeem dat vrijwel onmogelijk is.
Geen tests nodig? Ga je alles met de hand testen, dat zelfs de simpelste wijziging een uur werk vereist om er zeker van te zijn dat er geen neven effecten zijn. Gezien de structuur is dat een immens risico.
- Geen documentatie, "To understand how Banshee works, just start reading public/index.php and everything will be clear. Promise."
Nee dat is uitgebreide documentatie zeg, hoe maak ik een nieuwe module? hoe werk ik met het gebruikerssysteem, hoe maak ik formulieren? Nee ik ga geen berg code lezen. Ik wil NU direct kunnen zien of wat zodat ik een afgewogen beslissing kan nemen of dit geschikt is voor mijn volgende project. Zo is hoe iemand die op jouw website komt denkt.
Ja, de meeste frameworks hebben een berg documentatie, gelukkig maar! Symfony is een vreselijk goed voorbeeld hoe het moet. Leesbaar, vriendelijk, beknopt tot hoofdzaak (heb je meer informatie nodig? dan is die er ook maar apart zodat je niet overdonderd raakt met allerlei details).
Ik heb liever documentatie voor iets dat ik hoogstens één keer moet doen, dan dat moet ik gaan uitzoeken hoe dit vredesnaam op te lossen en het dan vervolgens nog verkeerd doet (met alle veiligheidsproblemen vandoen).
[Reactie gewijzigd door s.stok op 22 juli 2024 15:14]