Zum Inhalt springen
EUID Prüfservice & Prüfsiegel, Startseite
Website prüfen lassen

Prüfpunkt software.sourcemap.oeffentlichOffene Türen und Abwehr

Was verraten öffentliche Source Maps über den Code Ihrer Website?

Damit eine Website schnell lädt, wird ihr JavaScript beim Bauen verkleinert und zu wenigen Dateien zusammengefasst. Eine Source Map ist eine Hilfsdatei dazu: sie führt jede Stelle des verkleinerten Codes auf die Originaldatei zurück, damit Entwickler Fehler im Browser lesen können. Liegt sie auf dem Server, kann jeder Besucher sie laden. Die Prüfung sucht in den eigenen Skripten jeder Seite den Verweis auf eine Source Map und meldet, wenn die Datei abrufbar ist.

Lesbarer Code erleichtert die Suche nach Lücken

Das Prüfhandbuch der Sicherheitsgemeinschaft OWASP nennt die Folge: Eine Source Map macht den Code im Browser lesbar und erleichtert es Angreifern, Lücken zu finden oder vertrauliche Angaben einzusammeln. Dazu gehören Schlüssel für Schnittstellen, die Entwickler im Browser-Code hinterlegt haben. Der Originalcode steckt laut Standard ECMA-426 im wahlweisen Feld sourcesContent, das beim Bauen wegfallen kann.

Ihre Besucher bemerken den Wechsel nicht

Der Browser lädt eine Source Map nur, wenn die Entwicklerwerkzeuge offen und Source Maps darin eingeschaltet sind. Für Besucher bleibt die Seite also gleich, wenn die Datei vom Server verschwindet. Fehler aus dem Betrieb liest Ihre Agentur weiter im Fehlerdienst, wenn sie die Datei dort ablegt.

Pfade, Namen und meist der ganze Quelltext

Eine Source Map nennt die Originaldateien mit ihren Pfaden und die Namen von Funktionen und Variablen. Bei webpack mit der Einstellung source-map enthält sie zusätzlich den vollständigen Quelltext jeder Datei, mit Kommentaren. Wer sie lädt, liest den Code so, wie ihn Ihre Agentur geschrieben hat, etwa Adressen interner Schnittstellen oder Prüfungen, die nur im Browser stattfinden. Das ist für sich keine Lücke, spart einem Angreifer aber die Arbeit, den Code zu verstehen.

Gemessen werden bis zu fünf eigene Skripte je Seite

Die Prüfung lädt bis zu fünf Skripte jeder Seite, die von derselben Domain kommen wie die Seite, und sucht darin den Kommentar //# sourceMappingURL=. Steht er dort, fragt sie die genannte Datei ab. Antwortet der Server mit Status 200, nennt der Bericht die Adresse der Source Map. Den Inhalt lädt die Prüfung nicht; ob die Datei den Quelltext enthält, hängt von der Einstellung beim Bauen ab. Eine Source Map ohne Verweis im Skript findet die Prüfung nicht, wer den Dateinamen errät, aber schon.

Beim Bauen weglassen oder am Server sperren

Am einfachsten erzeugt das Build-Werkzeug für den Betrieb keine Source Maps: bei Vite ist build.sourcemap ohne Angabe ausgeschaltet, bei webpack setzt Ihre Agentur devtool auf false. Braucht sie die Dateien für die Fehlersuche, etwa für einen Dienst, der Fehlermeldungen sammelt, erzeugt sie sie ohne Verweis im Skript (Vite: hidden, webpack: hidden-source-map), lädt sie nur zu diesem Dienst hoch und bringt sie nicht auf den Webserver. Liegen die Dateien schon dort, sperrt eine Regel am Server alle Adressen, die auf .map enden.

Beispiele

Vite: Source Maps nur für den Fehlerdienst

Nicht erfüllt
export default {
  build: { sourcemap: true },
}
Erfüllt
export default {
  build: { sourcemap: 'hidden' },
}

Mit hidden entstehen die Dateien ohne Verweis im Skript. Ihre Agentur lädt sie zum Fehlerdienst hoch und löscht sie vor dem Veröffentlichen aus dem Ausgabeordner. Ohne Angabe erzeugt Vite keine Source Maps.

nginx: Source Maps für Besucher sperren

Nicht erfüllt
location / {
  try_files $uri $uri/ =404;
}
Erfüllt
location ~* \.map$ { deny all; }
location / {
  try_files $uri $uri/ =404;
}

Die erste Zeile sperrt jede Adresse, die auf .map endet. webpack rät bei der Einstellung source-map zu dieser Sperre für normale Besucher.

So gehen Sie es an

  1. Lassen Sie Ihre Agentur die Adresse aus dem Bericht öffnen und nachsehen, ob die Datei den Quelltext enthält (Feld sourcesContent).
  2. Sie stellt das Build-Werkzeug so ein, dass für den Betrieb keine Source Maps entstehen oder nur solche ohne Verweis.
  3. Dateien, die schon auf dem Server liegen, löscht sie oder sperrt sie mit einer Regel am Webserver.
  4. Stand im Quelltext ein Schlüssel oder eine interne Adresse, wechselt sie den Schlüssel und schützt die Adresse.
  5. Lassen Sie die Website neu messen. Der Bericht zeigt, ob noch eine Source Map abrufbar ist.

Tipps aus der Praxis

  • Braucht Ihre Agentur die Datei auf dem Server, bietet webpack nosources-source-map: ohne Quelltext, aber weiter mit Dateinamen und Aufbau.
  • Ein Schlüssel im Browser-Code bleibt auch ohne Source Map lesbar. Lassen Sie ihn auf den Server verlegen oder auf Ihre Domain beschränken.
  • Lassen Sie den Ablauf der Veröffentlichung abbrechen, sobald eine .map-Datei im Ausgabeordner liegt. So kommt sie auch nach einem Update des Build-Werkzeugs nicht auf den Server.

Weiter in der Cybersicherheit

Dieser Prüfpunkt gehört zur Cybersicherheit, Unterthema Offene Türen und Abwehr. Gemessen wird er im Prüfbereich Aktualität. Was die Prüfung insgesamt leistet, zeigt die Leistungsseite; wie ein Ergebnis zustande kommt, erklärt das Prüfverfahren.

  • Siegel Digitale Barrierefreiheit
  • Siegel Daten & Recht
  • Siegel Technische Qualität
  • Siegel Digital Excellence
  • Siegel Cyberversicherung

Geprüft. Für eine bessere digitale Zukunft.euid.com