Ik vrees dat je mis bent met het idee dat de rolen van de gebruikers op admin staan, zo een invloed zou hebben. Ik neem aan dat je spreekt over DATABANK ROLLEN!
De rollen van de databank kunnen beperkt worden tot de tables, databases enz, en hun toegang hiertoe. Als men voor iedere gebruiker een databank of table zou aanmaken ( en dit zou linken aan een id via de script ), ok, dan kan ik dit argument volgen. Maar in praktijk zou geen enkel zinnige programmeur ( gewoon voor maar 200k mensen ), elk van hun een aparte table/schema/databank voorzien. Goed zot zou ik zeggen.
Waarschijnlijk was het probleem eerder van: Er werd een check gedaan via de script code, voor welke rechten welke persoon had. Mogelijk was men de table vergeten waar die rechten in stonden, of beschadigt. De script checked voor de rechten, volgens de id. Maar aangezien het geen informatie vond, was de "default" dat men gewoon aan alles kon.
Beeld je in:
<?php
$access = true;
if ( $this->checkAccess( $id ) === false ) $access = false;
// Whatever dat ze hier doen.
Return $access;
?>
Perfect voorbeeld van amateur programmeren. En hoe indien de databank table niet aanwezig is, of incorrect geconfigureerd, je standaard toegang geeft.
M.a.w, het probleem was niet zozeer de database, maar was gewoon slordige ontwikkelde code. En als je denk dat zo een code niet voorkomt bij de overheid, denk nogmaals na...
Als je de originele uitleg leest, zie je dat men niet enkel toegang had tot de energie cijfers, maar ook de data zoals rekening nummers enz
Het is zeldzaam dat een fout gelopen databank aanpassing, zo een probleem kan veroorzaken. Een van de basis lessen, dat iedere deftige programmeur kent is: Voorzie alle code, dat de resultaten STANDAARD een false returnen, en enkel een true, indien het ECHT true is.
In men jaren, al genoeg van deze toestanden gezien, waar programma's te omzeilen zijn omdat men gewoon geen deftige beveiligingen inbouwt. Laat staan hoeveel programmeurs nog altijd de fout maken, om SQL queries uit te voeren, met parameters in de query ( say hello to my little friend SQL INJECTION! ).
Je zou denken dat voor de overheid de websites volgens een "hogere" standaard geschreven worden, dan de "gewone" websites, maar in praktijk, ... Neem van mij aan, ik ken mensen dat bij de overheid werken, en de horror verhalen dat ik hoor. Als je denk dat het soms durft mislopen in de Privé, ... En vaak hoeveel geld dat er buiten gesmeten word.
Zoals oude analoge modem lijnen dat nog actief waren, omdat men ze "vergeten" waren ( maar dat wel iedere maand, 10.000€ koste! ). Aantal mensen dat ze nog gebruikte... een 10 tal man ( en dat was 2009! ). En de gast dat de moeite deed om die problemen op te lossen ( hij was in lijn voor een promotie ). Tja... ze hebben dan maar een externe binnen gehaald om de dienst te besturen. En die gast dat al het werk deed: Verliet de dienst met teleurstelling van de jaren dat hij er verspild had. Of boekhoudkundige projecten, dat 25M Euro gekost hebben, , waar de programmeurs van de externe firma, op de kantoren van de staat ( omdat ze ter plekken moesten ontwikkelen ), ook zaten te werken voor de andere klanten ( op de werkuren van de staat ), en waar uiteindelijk bijna niemand gebruik van maakte. Met als eind resultaat spaghetti code... maar waar ze de code niet van bezaten!!
Neem van mij aan, als je verhalen leest zoals de bovenste, denk niet in ingewikkelde zaken zoals databank rechten enz. Denk gewoon naar een amateuristische reden, en vaak zit je dichter bij de echte reden dan je zou verwachten.