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 是故障时,soap:Fault 元素不得包含除了 faultcode、faultstring、faultactor 和 detail 之外的元素子元素。
R1001 当 ENVELOPE 是故障时,soap:Fault 元素的元素子元素必须是非限定的。
R1003 接收者必须接受详细信息元素上显示的具有任意数量的限定或非限定属性(包括零)的错误消息。限定属性的命名空间可以是限定文档元素 Envelope 的命名空间以外的任何命名空间。
R1004 当 ENVELOPE 包含 faultcode 元素时,该元素的内容必须是 SOAP 1.1 中定义的错误代码之一(必要时在详细元素中提供其他信息),或者是命名空间由错误的指定权限控制的 Qname(按优先顺序排列)。
R1005 ENVELOPE 不得在命名空间与限定文档元素 Envelope 的命名空间相同的任何元素上包含 soap:encodingStyle 属性。
R1006 ENVELOPE 不得包含 soap:Body 的任何元素上的 soap:encodingStyle 属性。
R1007 在 rpc-literal 绑定中描述的 ENVELOPE 不得包含属于 soap:Body 的任何元素上的 soap:encodingStyle 属性。
R1011 ENVELOPE 不得有 soap:Body 元素后面的 soap:Envelope 的任何元素子集。
R1012 消息必须以 UTF-8 或 UTF-16 的形式进行序列化。
R1013 包含 soap:mustUnderstand 属性的 ENVELOPE 只能使用词法形式 0 和 1。
R1014 ENVELOPE 中的 soap:Body 元素的子元素必须是命名空间限定的。
R1015 如果接收者遇到文档元素不是 soap: Envelope 的信封,则必须生成错误。
R1031 当 COVELOPE 包含故障码元素时,该元素的内容不得使用 SOAP 1.1 点表示法来优化错误的含义。
R1032 ENVELOPE 中的 soap:Envelope、soap:Header 和 soap:Body 元素不得具有与限定文档元素 Envelope 相同的命名空间中的属性。
R1033 ENVELOPE 不应包含命名空间声明:xmlns:xml=http://www.w3.org/XML/1998/namespace.
R1109 HTTP 请求消息中 soapAction HTTP 标头字段的值必须是带引号的字符串。
R1111 实例应在包含非错误信封的响应消息上使用 200 OK HTTP 状态码。
R1126 如果响应信封是错误,则实例必须返回 500 内部服务器错误 HTTP 状态码。
R1132 HTTP 请求消息必须使用 HTTP POST 方法。
R1140 应该使用 HTTP/1.1 发送一条消息。
R1141 必须使用 HTTP/1.1 或 HTTP/1.0 发送消息。
R2113 ENVELOPE 不得包含 soapenc:arrayType 属性。
R2211 使用 rpc-literal 绑定描述的 ENVELOPE 不得具有值为 1 或 true 的 xsi:nil 属性。
R2714 对于单向操作,实例不得返回包含信封的 HTTP 响应。具体而言,HTTP 响应实体正文必须为空。
R2729 An ENVELOPE described with an rpc-literal binding that is a response MUST have a wrapper element whose name is the corresponding wsdl:operation name suffixed with the stringResponse.
R2735 使用 rpc-Literal 绑定描述的 ENVELOPE 必须将参数的部分访问器元素和返回值放在任何命名空间中。
R2738 一个 ENVELOPE 必须包含在用于对其进行描述的 wsdl:binding 的 wsdl:operation 的 wsdl:input 或 wsdl:output 上指定的所有 soapbind:header。
R2740 描述中的 wsdl: binding 应包含描述每个已知错误的 soapbind: fault。
R2744 HTTP 请求消息必须包含 soapAction HTTP 标头字段,其引号值等于 soapbind: operation 的 soapAction 属性的值(如果存在于相应的 WSDL 描述中)。
Web 服务互操作性检查