XML API Problema con las contraseñas que contienen caracteres especiales
106656
Created On 09/25/18 20:36 PM - Last Modified 03/26/21 17:01 PM
Symptom
Cause
En todos los casos, la contraseña contiene caracteres especiales. La API generación de claves producirá un error cuando la contraseña contenga caracteres especiales como # y &. Este no es un PAN-OS problema específico. Esto se debe a la forma en que los navegadores y cURL manejan caracteres especiales. Esto se debe a que se trata de caracteres reservados utilizados como delimitadores generales o sub.
RFC definición de lista de delimitadores: https://tools.ietf.org/html/rfc3986#section-2.2
RFC: https://tools.ietf.org/html/rfc3986#section-3.5
En la sección 3.5: A el componente de identificador de fragmento se indica mediante la presencia de un carácter de signo numérico "#" y termina al final del URL archivo . Ahora, mira los documentos oficiales de cURL: https://curl.haxx.se/.
Curl admite fragmentos finos cuando URL se le pasa a, pero la parte del fragmento nunca se envía realmente a través del cable, por lo que no hace una diferencia en las operaciones de cURL, ya sea que esté presente o no. Por lo tanto, el "#" nunca se envía a través del cable, lo que resulta en tal comportamiento.
Cuando se utilizan sin URL codificación, puede ver que el navegador no envía realmente todo URL (contraseña en este caso). En los ejemplos siguientes, HTTP se habilitó para propósitos de demostración, y la facilidad de las capturas de paquetes muestra la HTTP carga útil.
Ejemplo 1: nombre de usuario: user2 y contraseña: user&2
Browser:
Captura de paquetes tomada en el cliente que envía la GET solicitud: Si usted mira la sección de
la contraseña, el navegador trunca la contraseña en "usuario."
Ejemplo 2: nombre de usuario: user3 y password user#3
Navegador:
Captura de paquetes tomada en el cliente que envía la GET solicitud: Si usted mira la sección de
contraseña, el navegador trunca la contraseña en "usuario." Por lo tanto, el problema se debe a la interpretación de caracteres especiales por navegadores y cURL.
Resolution
Aquí está una referencia rápida del juego de caracteres reservados:
reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
Si los datos de un URI componente entrarían en conflicto con el propósito de un carácter reservado como delimitador, los datos en conflicto deben URI codificarse. En este caso, si la contraseña contiene caracteres reservados, deben codificarse y, a continuación, usarse como entrada.
Por ejemplo, si la contraseña contiene caracteres especiales como "#" y "&", utilice el URL código %23 y %26 respectivamente.
Ejemplo API Solicitud:
https://198.51.100.1/api/?type=keygen&user=apiuser&password=api%23user
Additional Information
Para obtener información adicional, estos son algunos artículos de referencia:
https://docs.paloaltonetworks.com/ pan-os /8-1/ pan-os - panorama -api/get-started-with-the- pan-os -xml-api/get-your-api-key
Para facilitar el codificación y decodificación de URI:
https://www.url-encode-decode.com/
Para la lista de toda codificación de caracteres especiales HTML para:
https://www.w3schools.com/tags/ref_urlencode.asp