XML API Problem mit Kennwörtern, die Sonderzeichen enthalten
106658
Created On 09/25/18 20:36 PM - Last Modified 03/26/21 17:01 PM
Symptom
Cause
In allen Fällen enthält das Passwort Sonderzeichen. Die API Schlüsselgenerierung schlägt fehl, wenn das Kennwort Sonderzeichen wie z. B. . Dies ist kein PAN-OS spezifisches Thema. Dies ist auf die Art und Weise zurückzuführen, wie Browser und cURL Mitsonderzeichen verarbeiten. Dies liegt daran, dass es sich um reservierte Zeichen handelt, die als allgemeine oder Untertrennzeichen verwendet werden.
RFC Definition seroberste Liste der Trennzeichen: https://tools.ietf.org/html/rfc3986#section-2.2
RFC: https://tools.ietf.org/html/rfc3986#section-3.5
In Abschnitt 3.5: A Fragment-Id-Komponente wird durch das Vorhandensein eines Zahlenzeichens "-" angezeigt und am Ende des URL beendet. Nun, schauen Sie sich cURL offizielle Dokumente: https://curl.haxx.se/.
Curl unterstützt Fragmente in Ordnung, wenn ein URL an sie übergeben wird, aber das Fragmentteil wird nie wirklich über den Draht gesendet, so dass es keinen Unterschied macht, ob es vorhanden ist oder nicht. Daher wird das "A" nie über den Draht gesendet, was zu einem solchen Verhalten führt.
Wenn diese ohne Codierung verwendet URL werden, können Sie sehen, dass der Browser nicht tatsächlich das gesamte URL sendet (Passwort in diesem Fall). In den folgenden Beispielen HTTP wurde die Nutzlast für Demonstrationszwecke aktiviert, und die einfache Paketerfassung zeigt die HTTP Nutzlast an.
Beispiel 1: Benutzername: benutzer2 und Passwort: user&2
Browser:
Paketerfassung beim Senden der GET Anfrage:
Wenn Sie sich den Passwort-Abschnitt ansehen, kürt der Browser das Kennwort unter "Benutzer".
Beispiel 2: Benutzername: Benutzer3 und Kennwort benutzer 3
Browser:
Paketerfassung, die auf dem Client aufgenommen wurde, der die GET Anforderung sendet: Wenn Sie sich den
Kennwortabschnitt ansehen, kürt der Browser das Kennwort unter "Benutzer". Daher ist das Problem auf die Interpretation von Sonderzeichen durch Browser und cURL zurückzuführen.
Resolution
Hier ist eine kurze Referenz des reservierten Zeichensatzes:
reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
Wenn die Daten für eine Komponente mit dem URI Zweck eines reservierten Zeichens als Trennzeichen in Konflikt stehen würden, müssen die in Konflikt stehenden Daten URI codiert werden. Wenn das Kennwort in diesem Fall reservierte Zeichen enthält, müssen diese codiert und dann als Eingabe verwendet werden.
Wenn das Kennwort z. B. Sonderzeichen wie z. B. "A" und "&" enthält, verwenden Sie die URL Codierung %23 bzw. %26.
Beispiel API Anfrage:
https://198.51.100.1/api/?type=keygen&user=apiuser&password=api%23user
Additional Information
Weitere Informationen finden Sie hier einige Artikel als Referenz:
https://docs.paloaltonetworks.com/ pan-os /8-1/ pan-os - panorama -api/get-started-with-the- pan-os -xml-api/get-your-api-key
Für einfaches Codieren und Decoden von URIs:
https://www.url-encode-decode.com/
Für die Liste aller Sonderzeichencodierungen für HTML :
https://www.w3schools.com/tags/ref_urlencode.asp