在Web服务调用中添加带有请求有效负载的标头是否安全?

时间:2019-03-12 15:50:56

标签: spring spring-integration

web service integration - how to access request Object in response class?

我们正在使用http入站网关

<int-http:outbound-gateway request-channel="RequestChannel" url="${test.url}" expected-response-type="java.lang.String" http-method="POST" reply-channel="ResponseChannel"></int-http:outbound-gateway>

我有一个类似的要求,我将请求有效负载添加到标头中并进行Web服务调用。我在请求中有敏感信息,以及当我通过网络传输数据时它将有多安全。我可以遵循的方法来访问请求对象。

1 个答案:

答案 0 :(得分:0)

这种情况是,默认情况下,此类标头不通过Web Service调用传输。

如果您未在以下位置映射自定义标头名称:

<xsd:attribute name="mapped-request-headers" type="xsd:string">
            <xsd:annotation>
                <xsd:documentation><![CDATA[
Comma-separated list of names of SOAP Headers to be mapped from the SOAP request into the MessageHeaders.
This can only be provided if the 'header-mapper' reference is not being set directly. The values in
this list can also be simple patterns to be matched against the header names (e.g. "foo*" or "*foo").
                        ]]></xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>

它不会包含在目标SOAP请求中,也不会包含在HTTP标头中。

因此,在执行Web Service调用之前将敏感数据存储在标头中,并在收到回复后在下游还原该数据是完全安全的。

尽管您绝对需要考虑使用该头之后将其删除。其他一些组件可能不会限制标头的发送。

更新

<int-http:outbound-gateway>的情况下,默认情况下有一个DefaultHttpHeaderMapper,它仅配置为映射一些基于请求的标准HTTP标头。默认情况下,不映射最终用户自定义标头。基本上与我对Web服务所述的方法相同。