Naar de inhoud
Leermanager

Beveiliging en gegevensbescherming

Je vertrouwt ons de namen, e-mailadressen en toetsresultaten van je cursisten toe. Deze pagina legt uit hoe die beschermd zijn, wat er precies wordt vastgelegd en hoe je het weer meeneemt.

De belangrijkste regel zit in de code, niet in een beleidsstuk

Leermanager is een systeem waarin meerdere cursusaanbieders naast elkaar werken. De vraag die daarbij hoort is: hoe weet je zeker dat de een de gegevens van de ander nooit ziet?

Het antwoord is dat elke vraag naar de database expliciet op de organisatie filtert. Er is geen automatische laag die dat achter de schermen toevoegt, en dat is een bewuste keuze: zo'n laag verbergt wat er gebeurt, en verborgen beveiliging is beveiliging die je niet kunt nakijken.

Loopt er iets mis, dan is het antwoord 404 in plaats van 403. Een 403 zou bevestigen dat er iets bestaat dat je niet mag zien, en dan is de foutmelding zelf een manier om te achterhalen welke cursussen er elders bestaan.

Wachtwoorden en sessies

Wachtwoorden worden gehasht met scrypt

Niet versleuteld maar gehasht: er is geen sleutel waarmee ze terug te rekenen zijn, ook niet door ons. Wij kunnen je wachtwoord dus niet opzoeken en niet aan je doorgeven — alleen een herstellink sturen.

Zwakke wachtwoorden worden geweigerd

Naast een minimumlengte wordt gecontroleerd op het voor de hand liggende: je eigen e-mailadres, en het woord 'wachtwoord' zelf. Dat irriteert één keer en voorkomt het account dat als eerste geraden wordt.

Sessietokens staan alleen als HMAC in de database

Het token dat in je browser staat, staat niet in de database. Wat er staat is een afgeleide waarde. Een gestolen databasekopie levert daarmee geen werkende sessies op.

Je ziet je eigen sessies en kunt ze intrekken

Per apparaat met browser en tijdstip van laatste gebruik. Een sessie is 30 dagen geldig; vermoed je dat iemand meekijkt, dan beëindig je hem zelf.

Wat er verder in zit

  • Elke schrijfactie doorloopt vier controles: ben je ingelogd, mag je dit, past het binnen je plan, en is de invoer geldig
  • Snelheidsbegrenzing op alles wat verstuurt: uitnodigen, herstel aanvragen, herinneringen, testmail
  • Geen ruwe HTML in lesmateriaal, zodat invoer van een gebruiker nooit als code wordt uitgevoerd
  • Verkeer via HTTPS, met een sessiecookie die alleen over een beveiligde verbinding wordt verstuurd
  • Gegevens binnen de Europese Unie, bij een Europese hoster
  • Demo-omgevingen worden na 24 uur volledig gewist, inclusief de accounts die erin zijn gemaakt

Wat er van een cursist wordt vastgelegd

Dit is de volledige lijst. Er is geen meting van muisbewegingen, leestijd per alinea of schermactiviteit tijdens een toets.

GegevenWaarvoorWie ziet het
Naam en e-mailadresInloggen en het certificaat.De cursusaanbieder en de cursist zelf.
Versleuteld wachtwoordInloggen.Niemand; het is niet terug te rekenen.
Afgeronde lessen met tijdstipVoortgang tonen en de cursus kunnen afronden.De cursusaanbieder en de cursist zelf.
Toetspogingen met antwoorden en uitslagNakijken, uitslag berekenen, aantoonbaarheid.De cursusaanbieder en de cursist zelf.
Laatste keer inloggen en browser per sessieZien wie stilligt, en je eigen sessies kunnen intrekken.De cursusaanbieder ziet het tijdstip; de browser alleen de cursist zelf.

Cursisten zien elkaars gegevens en resultaten nooit. Er zijn geen ranglijsten en geen groepsoverzichten voor cursisten.

Vragen hierover

Nee. Elke vraag naar de database filtert op de organisatie van de ingelogde gebruiker. Vraag je een cursus op die niet van jou is, dan is het antwoord 404 en niet 403 — anders zou de foutmelding zelf verklappen welke id's er elders bestaan.

Wachtwoorden staan er als scrypt-hash in en zijn niet terug te rekenen. Sessietokens staan er alleen als HMAC in, dus een kopie van de database geeft niemand toegang tot een lopende sessie. Uitnodigings- en herstellinks staan er ook alleen gehasht in.

Een sessie is 30 dagen geldig. Op de pagina Mijn account zie je op welke apparaten je bent ingelogd en wanneer die voor het laatst actief waren, en je kunt elke sessie afzonderlijk beëindigen.

Er is één cookie voor je sessie en een lokale voorkeur voor licht of donker thema. Kom je via een advertentie binnen, dan komt daar één cookie bij dat dertig dagen onthoudt wélke advertentie dat was — zodat wij weten of adverteren iets oplevert. Er staat geen nummer in dat jou herkent. Voor bezoekcijfers draait er Plausible op onze eigen server: dat zet geen enkele cookie en bewaart geen IP-adres. Geen Google Analytics, geen advertentienetwerken, geen cookies van andere partijen — en daarom ook geen cookiebanner die om toestemming vraagt.

Ja. Lessen en naslag staan in Markdown, een hele cursus is als bestand te exporteren, en cursisten en resultaten zijn als CSV te downloaden. Iedere gebruiker kan bovendien de eigen accountgegevens downloaden zonder het aan iemand te vragen.

Bij een lek dat gegevens van jouw cursisten raakt, informeren wij jou — jij bent verwerkingsverantwoordelijke en degene die het bij de Autoriteit Persoonsgegevens moet melden. Dat staat ook in de verwerkersovereenkomst.

Verder lezen