最近我开始学习 Web 服务,以便在我的应用程序中使用它们。 我的目标是最大限度地降低 SOAP 请求被捕获的风险。 据我了解,SOAP 消息不仅应该使用“https”协议进行加密,还应该使用称为 WS-Security 的技术进行加密。
我在互联网上搜索了一些可以连接以进行测试的简单公共网络服务。 我发现的所有 SOAP 消息示例都包含使用未加密的“http”的超链接。
这种消息安全吗还是我遗漏了什么?
作为参考,下面是用于将数字转换为单词的 SOAP 请求正文示例:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<NumberToWords xmlns="http://www.dataaccess.com/webservicesserver/">
<ubiNum>this_is_a_placeholder_for_an_integer_number</ubiNum>
</NumberToWords>
</soap:Body>
</soap:Envelope>
包含“http”协议超链接的 SOAP 消息安全吗?
超链接是指
http://schemas.xmlsoap.org/soap/envelope/
和http://www.dataaccess.com/webservicesserver/
吗?如果是,那么这些不是超链接,而是XML 命名空间。
不会向这些地址提出请求。该命名空间的 XML Schema 可能托管在该地址,就像
http://schemas.xmlsoap.org/soap/envelope/
的情况一样,但这只是为了方便。该链接不需要工作。很多命名空间不提供这一点。
如果您想确保服务呼叫的安全,那么您有以下三种选择:
传输级安全意味着您传输消息,但您保护传输(即发送消息的管道)。这意味着使用 HTTPS 而不是 HTTP。该消息是纯文本形式,但由于它位于
https://
而不是 http://
,因此人们无法查看内部。
但这适用于点对点连接。如果您在传输消息时经历跳跃,您可能会有像“中间人”一样的代理,他们可能会查看消息内部。如果您不希望这样,那么您需要使他们无法阅读该消息。这里出现了消息级安全性,您可以对消息本身进行加密(例如使用 WS-Security 等扩展),而不是以纯文本形式发送消息。即使中间有一个人查看该消息,他们也不会理解任何内容,因为它是加密的。 显然,您可以将消息级安全性与传输级安全性结合起来,在其中加密消息并通过 HTTPS 发送消息。这是第三个选项。