Sicherheit

Datei-Upload-Feld ohne Typ-Einschränkung

Üblicher Schweregrad: mittel · Aufwand: gering

Woran du es erkennst

Ein Datei-Eingabefeld akzeptiert beliebige Dateitypen (kein accept-Attribut), oder sein Upload-Formular sendet an eine http://-Adresse. Passiv aus dem Markup beobachtet — es wurde keine Datei hochgeladen.

Warum es zählt

Ein Upload ohne client- UND serverseitige Typ-Begrenzung ist der klassische Weg für Webshells, gespeichertes XSS über SVG/HTML und Malware-Hosting. Ein http://-Uploadziel legt die Dateiinhalte zusätzlich auf dem Transportweg offen.

So behebst du es

  1. Setze ein accept-Attribut mit genau den Dateitypen, die das Feature braucht — als Bedienhilfe, niemals als Sicherheitsgrenze.
  2. Prüfe serverseitig: Endung, echten MIME-Typ (Magic Bytes), Größenlimit; speichere Uploads außerhalb des Web-Roots und liefere sie mit Content-Disposition: attachment aus.
  3. Lass Upload-Formulare niemals an http:// senden — das action-Ziel muss eine https://-Adresse der eigenen Origin sein.
  4. Scanne hochgeladene Dateien und entferne aktive Inhalte (SVG-Skripte, Polyglots), bevor sie andere Nutzer zu sehen bekommen.

Zum Nachlesen