XML API 特殊文字を含むパスワードに関する問題
106652
Created On 09/25/18 20:36 PM - Last Modified 03/26/21 17:01 PM
Symptom
Cause
いずれの場合も、パスワードには特殊文字が含まれています。 APIパスワードに # や &などの特殊文字が含まれている場合、キーの生成は失敗します。 これは PAN-OS 特定の問題ではありません。 これは、ブラウザーと cURL が特殊文字を処理する方法によるものです。 これは、一般区切り文字またはサブ区切り文字として使用される予約文字であるためです。
RFC 区切り文字のリストを定義する: https://tools.ietf.org/html/rfc3986#section-2.2
RFC: https://tools.ietf.org/html/rfc3986#section-3.5
セクション 3.5: A フラグメント識別子コンポーネントは、番号記号 "#" 文字の存在によって示され、 の終わりで終了します URL 。 さて、cURLの公式文書を見てください: https://curl.haxx.se/.
Curl はフラグメントが渡されたときにうまくサポート URL されますが、フラグメント部分が実際にワイヤーを介して送信されることはないので、存在するかどうかにかかわらず cURL の操作に違いはありません。 したがって、"#" は、ネットワークを経由して送信されることは決してありません。
これらをエンコードせずに使用すると URL 、ブラウザが実際に全体 URL (この場合はパスワード)を送信していないことがわかります。 以下の例では、 HTTP デモンストレーション用に有効になっており、パケット キャプチャの容易さはペイロードを示しています HTTP 。
例 1: ユーザー名: user2 とパスワード: user&2
ブラウザー:
要求を送信するクライアントで取得されたパケットキャプチャ GET :
パスワードセクションを見ると、ブラウザーは「user」でパスワードを切り捨てます。
例 2: ユーザー名: user3 とパスワードユーザー #3
ブラウザ:
要求を送信するクライアントで取得したパケット キャプチャ GET : パスワード
セクションを見ると、ブラウザは "user" でパスワードを切り捨てます。 したがって、問題は、ブラウザとcURLによる特殊文字の解釈によるものです。
Resolution
以下は、予約文字セットのクイック リファレンスです。
reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
コンポーネントのデータ URI が区切り文字として予約文字の目的と競合する場合は、競合するデータをエンコードする必要があります URI 。 この場合、パスワードに予約文字が含まれている場合は、エンコードしてから入力として使用する必要があります。
たとえば、パスワードに "#" や "&" などの特殊文字が含まれている場合は、 URL それぞれエンコード%23と%26を使用します。
例 API 要求:
https://198.51.100.1/api/?type=keygen&user=apiuser&password=api%23user
Additional Information
詳細については、次の参考にしてください:
https://docs.paloaltonetworks.com/ pan-os /8-1/ pan-os - panorama -api/get-started-with-a-xml-api/get-your-api-key pan-os
URI のエンコードとデコードを簡単に行う:
https://www.url-encode-decode.com/
すべての特殊文字のリストについては HTML 、次
の https://www.w3schools.com/tags/ref_urlencode.asp