Citrix ADC

Web サービスの相互運用性チェック

Web サービス相互運用性 (WS-I) チェックでは、要求と応答の両方が WS-I 標準に準拠しているかどうかが検査され、この標準に準拠していない要求と応答がブロックされます。WS-I チェックの目的は、他の XML と適切にやり取りしない可能性のある要求をブロックすることです。攻撃者は、相互運用性の不整合を使用して、XML アプリケーションに対する攻撃を開始する可能性があります。

ウィザードまたは GUI を使用する場合は、[Web サービスの相互運用性チェックの変更] ダイアログボックスの [全般] タブで、[ブロック]、[ログ]、[統計]、および [ラーニング] の各アクションを有効または無効にできます。

コマンドラインインターフェイスを使用する場合は、次のコマンドを入力して Web サービスの相互運用性チェックを構成できます。

  • set appfw profile <name> -xmlWSIAction [block] ][log] [learn] [stats] [none]

個別の Web サービス相互運用性ルールを構成するには、GUI を使用する必要があります。[Web サービスの相互運用性チェックの変更] ダイアログボックスの [チェック] タブで、ルールを選択し、[有効] または [無効] をクリックしてルールを有効または無効にします。[開く] をクリックして、そのルールの [Web サービス相互運用性の詳細] メッセージボックスを開くこともできます。メッセージボックスには、ルールに関する読み取り専用情報が表示されます。これらのルールを変更したり、その他の設定を変更したりすることはできません。

WS-I チェックでは、WS-I 基本プロファイル 1.0 にリストされているルールが使用されます。WS-I は、相互運用可能な Web サービスソリューションを開発するためのベストプラクティスを提供します。WS-I チェックは SOAP メッセージに対してのみ実行されます。

各 WSI 標準規則の説明を以下に示します。

規則 説明
BP1201 メッセージ本文は、名前空間を持つ soap:envelope である必要があります。
R1000 ENVELOPEがFaultである場合、soap:Fault要素は、faultcode、faultstring、faultactor、detail以外の要素の子を持つことはできません。
R1001 ENVELOPEがFaultである場合、soap:Fault要素の子は、修飾されなければなりません。
R1003 受信者が詳細要素に表示される任意の数の修飾属性または非修飾属性(ゼロを含む)を持つフォルト・メッセージを受け入れる必要があります。修飾された属性の名前空間は、修飾されたドキュメントエレメントの Envelope の名前空間以外の任意のものにすることができます。
R1004 ENVELOPEにfaultcode要素が含まれている場合、その要素の内容は、SOAP 1.1で定義されたフォルトコードの1つ(詳細要素で必要に応じて追加情報を提供します)、またはフォルトの指定権限によって名前空間が制御されるQnameのいずれかでなければなりません(優先順序)。
R1005 ENVELOPEは、その名前空間が修飾された文書要素Envelopeの名前空間と同じである要素のいずれかのsoapを含んではいけません。
R1006 EnVELOPEは、soap:Bodyの子である任意の要素のsoap:encodingStyle属性を含んではいけません。
R1007 rpcリテラルバインディングで記述されたENVELOPEは、soap:Bodyの孫である任意の要素のsoap:encodingStyle属性を含んではいけません。
R1011 EnVELOPE には、SOAPE: Body要素に続くSOAPE: Envelopeの要素の子があってはなりません。
R1012 メッセージを UTF-8 または UTF-16 としてシリアル化する必要があります。
R1013 soap:mustUnderstand属性を含むENVELOPEは、字句形式0と1のみを使用しなければなりません。
R1014 ENVELOPEのsoap:Body要素の子は、名前空間修飾でなければなりません。
R1015 受信者は、ドキュメント要素が soap:Envelope でないエンベロープに遭遇した場合、フォルトを生成する必要があります。
R1031 ENVELOPEにfaultcode要素が含まれている場合、その要素の内容は、SOAP 1.1ドット表記を使用してフォルトの意味を洗練しないでください。
R1032 The soap:Envelope, soap:Header, and soap:ENVELOPE内のボディ要素は、修飾された文書要素のエンベロープのそれと同じ名前空間内の属性を持つことはできません
R1033 EnVELOPEは名前空間宣言を含んではいけません:xmlns:xml=http://www.w3.org/XML/1998/namespace.
R1109 HTTP 要求メッセージの SOAPAction HTTP ヘッダーフィールドの値は、引用符で囲まれた文字列でなければなりません。
R1111 INSTANCE は、障害ではないエンベロープを含む応答メッセージに対して 200 OK HTTP ステータスコードを使用すべきです。
R1126 応答エンベロープが Fault の場合、INSTANCE は 500 内部サーバーエラー HTTP ステータスコードを返す必要があります。
R1132 HTTP リクエストメッセージでは、HTTP POST メソッドを使用する必要があります。
R1140 メッセージはHTTP/1.1を使用して送信する必要があります。
R1141 メッセージは、HTTP/1.1 または HTTP/1.0 のいずれかを使用して送信する必要があります。
R2113 エンベロープには、soapenc:arrayType 属性を含めることはできません。
R2211 rpc-literal バインディングで記述された ENVELOPE は、パーツアクセサの値が 1 または true の xsi: nil 属性を持つことはできません。
R2714 一方向操作の場合、INSTANCEはエンベロープを含むHTTP応答を返してはいけません。具体的には、HTTP 応答エンティティ本体は空である必要があります。
R2729 応答であるrpcリテラルバインディングで記述されたENVELOPEは、対応するwsdl:操作名に接尾辞stringResponseであるラッパー要素を持たなければなりません。
R2735 rpc-literal バインディングで記述されたENVELOPEは、パラメータと戻り値のパートアクセサ要素を名前空間なしに配置しなければなりません。
R2738 ENVELOPEには、wsdl:inputまたはwsdl:それを記述するwsdl:バインディングのwsdl:操作のwsdl:出力で指定されたすべてのsoapbindを含める必要があります。
R2740 説明のwsdl:バインディングには、それぞれの既知の障害を記述するsoapbindを含める必要があります。
R2744 HTTP 要求メッセージには、対応する WSDL 記述内に存在する場合、soapbind:operation の soapAction 属性の値と等しい引用符で囲まれた値を持つ SOAPAction HTTP ヘッダーフィールドが含まれていなければなりません。

Web サービスの相互運用性チェック