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