Web服务互操作性检查
Web服务互操作性(Web Services Interoperability, WS-I)检查检查请求和响应是否符合WS-I标准,并阻止那些不符合该标准的请求和响应。WS-I检查的目的是阻止可能无法与其他XML进行适当交互的请求。攻击者可以利用互操作性中的不一致性对XML应用程序发起攻击。
如果您使用向导或GUI,在“修改Web服务互操作性检查”对话框的“常规”页签中,您可以启用或禁用“块”、“日志”、“统计”和“学习”操作。
如果使用命令行方式,可以输入如下命令配置Web服务互操作性检查:
设置appfw配置文件
-xmlWSIAction [block]][log] [learn] [stats] [none]
要配置单个Web服务互操作性规则,必须使用GUI。在“修改Web服务互操作性检查”对话框的“检查”页签中,选择规则,单击“启用”或“禁用”,启用或禁用该规则。还可以单击Open打开该规则的Web服务互操作性详细信息消息框。该消息框显示该规则的只读信息。您不能修改这些规则或对其进行其他配置更改。
WS-I检查使用WS-I基本概要1.0中列出的规则。WS-I为开发可互操作的Web服务解决方案提供了最佳实践。WS-I检查仅在SOAP消息上执行。
每条WSI标准规则的说明如下:
规则 | 描述 |
---|---|
BP1201 | 消息体应该是带有名称空间的soap信封。 |
R1000 | 当一个信封是错误的,soap:Fault元素除了faultcode, faultstring, faultactor和detail之外,不能有其他子元素。 |
R1001 | 当一个信封是错误的,soap:Fault元素的子元素必须是不合格的。 |
R1003 | RECEIVER必须接受出现在detail元素上的具有任意数量的合格或不合格属性(包括零)的错误消息。限定属性的名称空间可以是除限定文档元素Envelope的名称空间之外的任何名称空间。 |
R1004 | 当信封包含故障代码元素时,该元素的内容必须是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属性的信封必须只使用词法形式0和1。 |
R1014 | ENVELOPE中soap:Body元素的子元素必须是命名空间限定的。 |
R1015 | 如果接收端遇到文档元素不是soap: envelope的信封,则必须产生一个错误。 |
R1031 | 当信封包含故障代码元素时,该元素的内容不得使用SOAP 1.1点符号来细化故障的含义。 |
R1032 | Envelope中的soap:Envelope、soap:Header和soap:Body元素的属性不能与限定文档元素Envelope的属性在同一个命名空间中 |
R1033 | 信封不应该包含命名空间声明: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 | 信封不能包含soapenc:arrayType属性。 |
R2211 | 用rpc-literal绑定描述的ENVELOPE绝对不能在部分访问器上具有xsi:nil属性值为1或true。 |
R2714 | 对于单向操作,实例绝对不能返回包含信封的HTTP响应。具体来说,HTTP响应实体必须为空。 |
R2729 | 用rpc-literal绑定描述的ENVELOPE(响应)必须有一个包装器元素,其名称是对应的wsdl:操作名称,后缀为stringResponse。 |
R2735 | 用rpc-literal绑定描述的ENVELOPE必须将用于参数和返回值的部件访问器元素放在没有命名空间的地方。 |
R2738 | 一个ENVELOPE必须包含wsdl:operation的wsdl:input或wsdl:output中指定的所有soapbind:headers。 |
R2740 | DESCRIPTION中的wsdl:binding应该包含soapbind:fault,描述每个已知的故障。 |
R2744 | HTTP请求消息必须包含SOAPAction HTTP报头字段,如果在相应的WSDL描述中存在,则该字段的引号值等于soapbind:operation的SOAPAction属性的值。 |
Web服务互操作性检查
在本文中
复制!
失败了!