HTTP CSP base-uri Directive

Die Content-Security-Policy base-uri Direktive beschränkt die URLs, die im HTML <base>-Element verwendet werden dürfen. Sie verhindert Base-Tag-Injection-Angriffe, bei denen Angreifer das base-Element manipulieren um relative URLs auf bösartige Ziele umzuleiten.

Typ

CSP Fetch-Direktive

Syntax

Die Direktive definiert erlaubte Quellen für das base-Element durch Whitelisting vertrauenswürdiger URLs.

http
Content-Security-Policy: base-uri 'self'
Content-Security-Policy: base-uri https://example.com

Direktiven

Die base-uri Direktive akzeptiert Standard-CSP-Quellausdrücke zur Kontrolle erlaubter Base-URLs.

'none'
Verbietet jegliche base-Elemente. Strengste Sicherheitsoption für Anwendungen ohne base-Tag-Nutzung.
'self'
Erlaubt base-URLs nur vom gleichen Origin. Verhindert Cross-Origin-Base-Tag-Injection.
https://example.com
Explizite Domain-Whitelisting. Erlaubt base-URLs von spezifischen vertrauenswürdigen Hosts.
'unsafe-inline'
Hat keine Wirkung für base-uri. Direktive ignoriert diesen Wert.
'strict-dynamic'
Hat keine Wirkung für base-uri. Nur relevant für script-src und style-src.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für die base-uri Direktive.

Beispiel 1 Verhindern aller base-Elemente

http
HTTP/1.1 200 OK
Content-Security-Policy: base-uri 'none'

<!DOCTYPE html>
<html>
<head>
  <base href="https://evil.com/">
  <!-- Wird blockiert durch CSP -->
</head>

Browser blockiert das base-Element und meldet CSP-Violation. Alle relativen Links behalten ihre ursprünglichen Ziele bei. Schützt vor Base-Tag-Injection-Angriffen.

Beispiel 2 Nur Same-Origin base-URLs erlauben

http
Content-Security-Policy: base-uri 'self'; default-src 'self'; script-src 'self' https://cdn.example.com

<!DOCTYPE html>
<html>
<head>
  <base href="/">
  <!-- Erlaubt, da same-origin -->
</head>
<body>
  <a href="api/users">Users</a>
  <!-- Wird zu /api/users, nicht zu https://evil.com/api/users -->
</body>

Beispiel 3 Multi-Origin SPA mit CDN

http
Content-Security-Policy: base-uri 'self' https://app.example.com https://static.example.com; default-src 'self'

<!DOCTYPE html>
<html>
<head>
  <base href="https://app.example.com/dashboard/">
</head>
<body>
  <script src="../js/app.js"></script>
  <!-- Löst zu https://app.example.com/js/app.js auf -->
</body>

Base-Tag Injection Attack Prevention Flow

CSP base-uri schützt vor Base-Tag-Injection

Vorteile für die Systemarchitektur

  • Base-Tag-Injection-Prävention: Verhindert Manipulation des base-Elements zur Umleitung relativer URLs auf bösartige Ziele
  • DOM-basierte XSS-Mitigation: Schützt vor Angriffen die relative Links ausnutzen um Schadcode nachzuladen oder Credentials zu stehlen
  • Defense gegen Link-Manipulation: Sichert relative URL-Auflösung in Single-Page-Applications mit dynamischem Routing

Spezifikation

Content Security Policy Level 3 – W3C Working Draft https://www.w3.org/TR/CSP3/#directive-base-uri

Weitere Spezifikationen

Content-Security-Policy Header, CSP default-src Directive