Hoe deze controle werkt
Scanaris vraagt zeven gangbare mappen van je domein op: /uploads/, /images/, /assets/, /files/, /backup/, /static/ en /media/. Als een ervan antwoordt met een pagina waarvan de titel of kop "Index of …" is, het formaat dat Apache, nginx en de meeste servers genereren wanneer ze een map opsommen, opent hij een bevinding met gemiddelde ernst en het pad. Een kale 200 wordt niet gemeld: een single-page app die op alle routes haar HTML teruggeeft, past niet op het patroon.
Waarom dit belangrijk is
Een mapoverzicht verandert een map in een doorbladerbare catalogus van alles wat erin zit, ook wat je nooit vanaf een pagina hebt gelinkt: back-ups, exports, door gebruikers geüploade documenten, oude versies van bestanden, afbeeldingen van nog niet gepubliceerde producten. Niemand hoeft namen te raden; de server levert ze gesorteerd en met datum. En het is de eerste plek waar een automatische scanner kijkt, omdat een open overzicht vaak naar iets ergers in dezelfde map leidt.
Waarom het gebeurt
De webserver heeft bij een verzoek naar een map zonder index.html twee opties: 403 antwoorden of een lijst genereren. Apache en sommige shared-hostingpanelen komen met de lijst ingeschakeld; nginx heeft hem uit tenzij iemand hem heeft aangezet met autoindex on. In Express-apps doet een vergeten serve-index of een express.static met overzichtsopties hetzelfde.
Hoe je het oplost
- nginx: zoek
autoindex onin de configuratie en zet het opoff(of verwijder het; uit is de standaard). - Apache: in de VirtualHost of in een
.htaccessin de root,Options -Indexes. - Express: verwijder elk gebruik van
serve-indexen controleer datexpress.staticalleen naar de buildmap wijst. - Shared hosting: het paneel heeft meestal een optie "Index Manager" of "Directory browsing"; zet die voor het domein op "No indexing".
- Vercel, Netlify en vergelijkbare genereren geen overzichten; zie je de bevinding daar, dan hoort de map bij een andere server die onder je domein antwoordt.
Controleer daarna wat er in de opgesomde mappen stond: alles daarin was openbaar, ook al is de lijst nu niet meer zichtbaar. Stonden er back-ups of gebruikersgegevens, beschouw ze dan als gedownload en handel daarnaar. En verplaats privébestanden uit de map die de server serveert; de controles gevoelige bestanden en blootgestelde back-ups dekken de ernstigste gevallen.
Controleer of het opgelost is
for d in uploads images assets files backup static media; do
printf "%-10s " "$d"; curl -s "https://jouwdomein.nl/$d/" | grep -c "Index of"
done
Alle moeten 0 teruggeven. Probeer ook elke andere map waarvan je weet dat die op je server bestaat, zoals /wp-content/uploads/ of /docs/.
Veelgestelde vragen
Mijn afbeeldingenmap is toch al openbaar. Wat maakt het uit of hij wordt opgesomd?
Het verschil is tussen iemand die een afbeelding kan zien waarvan hij de URL kent en iemand die ze allemaal kan zien, inclusief die voor een nog niet gelanceerde campagne of die van een specifieke klant. Het overzicht onthult ook bestandsnamen die soms persoonsgegevens bevatten.
Waarom maar zeven mappen testen?
Dat zijn de mappen waar het merendeel van de open overzichten op echte sites zich concentreert. Als je server het overzicht aan heeft staan, geldt dat normaal voor allemaal, dus de correctie in de configuratie sluit het overal.
Is een overzicht van een lege map een probleem?
Een klein probleem, maar het geeft aan dat het overzicht op de server aan staat. Schakel het toch uit: de map blijft niet eeuwig leeg.