Kodierte Proxy-Anmeldedaten in einer Batchdatei unverändert lassen
Prozentkodierte Proxy-Benutzernamen und -Passwörter erhalten, wenn ein Windows-Befehl in eine .bat-Datei verschoben wird.
Eine Proxy-URL funktioniert, wenn sie direkt konfiguriert wird, aber die Authentifizierung schlägt fehl, nachdem derselbe Wert in eine Windows-Batchdatei verschoben wurde. Prüfen Sie, ob der Batch-Parser die Prozentzeichen geändert hat, bevor der HTTP-Client die URL erhalten hat.
Es gibt zwei getrennte Darstellungen. Die URL-Kodierung kann einen Backslash als %5C und ein Fragezeichen als %3F darstellen. Ein Literal-Prozentzeichen in einem Batchdatei-Befehl muss als %% maskiert werden.
Für ein beispielhaftes Konto domain\user mit dem Platzhalterpasswort pass? kann eine .bat-Datei enthalten:
set "https_proxy=http://domain%%5Cuser:pass%%[email protected]:8080"
Der danach gestartete Prozess sollte eine URL erhalten, die domain%5Cuser:pass%3F enthält. Die doppelten Prozentzeichen gehören zur Batch-Quelle, nicht zu der vom Client gespeicherten Proxy-URL.
Kopieren Sie diese Batch-Schreibweise nicht in eine .npmrc-Datei oder in das Proxy-Feld einer Anwendung: Diese Eingaben durchlaufen nicht denselben Batch-Parsing-Schritt. Ebenso ist dieses Beispiel keine PowerShell-Syntax. Ein anderer Wrapper, etwa CALL oder ein für eine zweite Shell konstruierter Befehl, kann einen weiteren Parsing-Durchlauf einführen und erfordert eine eigene Prüfung.
Setzen Sie die SET-Zuweisung wie gezeigt in Anführungszeichen, damit beiläufige Leerzeichen oder Shell-Metazeichen nicht Teil eines unbeabsichtigten Befehls werden. Anführungszeichen allein verhindern die Prozent-Expansion nicht.
Vergleichen Sie bei der Prüfung des Ergebnisses die erwartete Kodierung mit einer redigierten Darstellung, statt die passworttragende URL in ein gemeinsam genutztes Protokoll zu schreiben. Eine Shell-Escaping-Korrektur bewahrt die Anmeldedaten; sie wählt kein Authentifizierungsschema, das der Client nicht bereits unterstützte.