Start · Sprachen · JavaScript · Referenz · URL.password

URL.password

Eigenschaft

Liest oder setzt die Passwortkomponente einer URL als prozentkodierten String, z. B. <code>geheim</code> in <code>https://anna:geheim@example.com</code>.

seit JavaScript Baseline: alle modernen Browser; Node.js 10+ (glob Kategorie: webapi

Signatur

URL.password

Beschreibung

Die Eigenschaft password einer URL-Instanz enthält das Passwort aus dem Benutzerinformations-Teil einer URL, also den Teil nach dem Doppelpunkt und vor dem @: schema://benutzer:passwort@host/. Enthält die URL kein Passwort, ist der Wert ein leerer String "".

Die Eigenschaft ist les- und schreibbar. Beim Setzen wird der Wert automatisch nach dem userinfo percent-encode set kodiert: Zeichen wie @, :, /, ?, #, Leerzeichen oder Nicht-ASCII-Zeichen werden in %XX-Sequenzen umgewandelt. Beim Lesen erhalten Sie den Wert daher prozentkodiert; für den Klartext ist decodeURIComponent() nötig. Jede Änderung wirkt sich sofort auf href und die anderen abgeleiteten Eigenschaften aus.

Typische Einsatzfälle sind das Auslesen von Zugangsdaten aus Verbindungs-URLs (z. B. postgres://user:pw@db:5432/app in Node.js), das sichere Zusammenbauen solcher URLs mit Sonderzeichen im Passwort sowie das Entfernen von Zugangsdaten, bevor eine URL geloggt oder angezeigt wird.

Bei URLs, die keine Benutzerinformationen haben können – etwa ohne Host oder mit dem Schema file: – bleibt eine Zuweisung wirkungslos.

Parameter

Name Typ Default Beschreibung
$value string Nur beim Setzen: das neue Passwort. Wird automatisch prozentkodiert. Ein leerer String entfernt das Passwort aus der URL.

Rückgabewert

Typ
string
Beschreibung
Das prozentkodierte Passwort der URL oder "", wenn keins vorhanden ist.

Beispiele

Passwort aus einer URL auslesen

const url = new URL('https://anna:geheim@example.com/login');
console.log(url.username);
console.log(url.password);

const ohne = new URL('https://example.com/');
console.log(JSON.stringify(ohne.password));
anna geheim ""

Passwort mit Sonderzeichen sicher setzen

const dbUrl = new URL('postgres://db.intern:5432/shop');
dbUrl.username = 'app';
dbUrl.password = 'p@ss:wört 1';

console.log(dbUrl.password);
console.log(dbUrl.href);
// Klartext zurückgewinnen
console.log(decodeURIComponent(dbUrl.password));
p%40ss%3Aw%C3%B6rt%201 postgres://app:p%40ss%3Aw%C3%B6rt%201@db.intern:5432/shop p@ss:wört 1

Zugangsdaten vor dem Loggen entfernen

const maskiereUrl = (raw) => {
  const url = new URL(raw);
  if (url.password) url.password = '***';
  return url.href;
};

const entferneZugangsdaten = (raw) => {
  const url = new URL(raw);
  url.username = '';
  url.password = '';
  return url.href;
};

const quelle = 'https://admin:topsecret@api.example.com/v1/status';
console.log(maskiereUrl(quelle));
console.log(entferneZugangsdaten(quelle));
https://admin:***@api.example.com/v1/status https://api.example.com/v1/status

Zuweisung ohne Wirkung bei file:-URLs

const datei = new URL('file:///tmp/bericht.txt');
datei.password = 'geheim';
console.log(JSON.stringify(datei.password));
console.log(datei.href);
"" file:///tmp/bericht.txt

// Wichtig · Fallstricke

  • Sicherheit: Zugangsdaten in URLs landen leicht im Browserverlauf, in Server- und Proxy-Logs, im Referer-Header oder in Fehlermeldungen. Übertragen Sie Passwörter besser über den Authorization-Header und entfernen Sie username/password, bevor Sie URLs protokollieren oder anzeigen.
  • fetch(): Im Browser wirft fetch() bzw. new Request() einen TypeError, wenn die URL Zugangsdaten enthält. Übergeben Sie diese stattdessen z. B. als Authorization: Basic ….
  • Kodierung: Der Getter liefert den Wert prozentkodiert zurück. Vergleiche mit einem Klartext-Passwort schlagen deshalb fehl, wenn Sie nicht vorher decodeURIComponent() anwenden.
  • Setzen Sie ein Passwort ohne Benutzernamen, entsteht eine URL wie https://:pw@host/. Das ist gültig, wird aber von manchen Servern nicht erwartet.
  • Bei URLs ohne Host sowie bei file:-URLs wird die Zuweisung stillschweigend ignoriert, ohne dass ein Fehler geworfen wird.
  • Kompatibilität: Wird von allen modernen Browsern und Node.js unterstützt. URL steht in Node.js seit Version 10 global zur Verfügung.