Php 带有https WSDL的SOAP安全吗?

Php 带有https WSDL的SOAP安全吗?,php,web-services,soap,https,wsdl,Php,Web Services,Soap,Https,Wsdl,我正在做一个使用PHP和SOAP连接到web服务的项目,我有一个关于安全性的问题 在基本层面上,我的代码如下: // Connect to web service $client = new SoapClient( 'https://mywebservice.com:8443/whatever?wsdl' ); // Store the response after passing my values for that service $response = $client->my_se

我正在做一个使用PHP和SOAP连接到web服务的项目,我有一个关于安全性的问题

在基本层面上,我的代码如下:

// Connect to web service
$client = new SoapClient( 'https://mywebservice.com:8443/whatever?wsdl' );

// Store the response after passing my values for that service
$response = $client->my_service( $my_args );
SoapClient URL通过https,是WSDL的地址。它的所有功能都很好-我能够返回和张贴数据回来没有问题

将在其上使用的网站正在使用SSL sitewide。我的问题是-如果我们对WSDL使用https,那么上述方法是否安全地来回传递敏感数据?或者我应该用我不知道的肥皂做些额外的事情

我知道有WS-Security,但如果所有内容都通过https,是否需要WS-Security


谢谢

回答安全问题需要询问self我们试图保护什么,以及攻击向量可能是什么

简而言之,根据您的要求,HTTPS是安全的。这是因为您询问SSL是否可以安全地保护web服务器知道并希望发送到后端服务器的信息。SSL就是为了这个。您不需要使用其他WS-Security功能。至少请验证服务器证书

只要所有网站都在SSL下运行,并且您实现了安全网站的所有常见要求,包括和拒绝服务HTTP请求,这是安全的。我之所以这样说,是因为我假设您可能想要保护的敏感数据来自客户端

例1 例如,假设一个信用卡支付系统存在漏洞

  • 客户端通过HTTPS连接到web服务器并发送CC号。谁也看不出来
  • 服务器通过HTTPS将卡号推送到后端。谁也看不出来
  • 后端将信用卡号明文存储在数据库系统中
答案将是:“好的,您正在保护web服务器和后端之间的通信,但是请注意有人对查看数据库感兴趣”。想象一下,HTTPS网站上存在一个SQL注入漏洞,可以转储信用卡数据库。这不是HTTPS的用途

例2 现在,让我们研究另一个HTTPS还不够的场景。基本上,HTTPS保护端到端通信。以下是我的要求:

  • 付款授权必须由请求付款的机器永久签署,并存储在第三方服务中以备将来审核
显然,SSL解决不了这个问题。假设您的web服务是社区的一部分,并且后端服务器与多个web服务器对话。SSL将保护和验证web和后端之间的通信,但是后端服务器可以存储任意有效的SOAP消息,声称它们来自您的web服务器

您必须为此对SOAP有效负载进行签名,并使用WS-Security。有效负载可以传输到第三方审核服务,封装在由后端服务验证的外部SOAP消息中

例3:让我们把事情复杂化 现在让我改变你的问题。“如何允许客户端向web服务器发送服务器无法读取但后端可以读取的敏感信息?”

例如,当POS机(如下图所示,由Google Images提供)想要向您的web服务器发送一份采购订单而不透露CC号时,只有银行知道该订单

很抱歉,我找不到过去几年我在大学里做过的关于这个场景的工作,因为我有一张关于它的幻灯片

那么SSL还不够,您可以使用WS-Security执行以下操作:

  • 客户端形成一条SOAP消息,其中包含使用后端服务器密钥加密的卡号
  • 客户机用包含项目的采购订单封装SOAP消息,并将其发送到服务器,甚至通过HTTP发送
  • Web服务器接收采购订单并准备订单
  • Web服务器接收为银行加密的不可读SOAP消息,并发出付款单
  • 成功付款后,订单即交付

回答安全问题需要询问self我们试图保护的是什么,以及攻击向量可能是什么

简而言之,根据您的要求,HTTPS是安全的。这是因为您询问SSL是否可以安全地保护web服务器知道并希望发送到后端服务器的信息。SSL就是为了这个。您不需要使用其他WS-Security功能。至少请验证服务器证书

只要所有网站都在SSL下运行,并且您实现了安全网站的所有常见要求,包括和拒绝服务HTTP请求,这是安全的。我之所以这样说,是因为我假设您可能想要保护的敏感数据来自客户端

例1 例如,假设一个信用卡支付系统存在漏洞

  • 客户端通过HTTPS连接到web服务器并发送CC号。谁也看不出来
  • 服务器通过HTTPS将卡号推送到后端。谁也看不出来
  • 后端将信用卡号明文存储在数据库系统中
答案将是:“好的,您正在保护web服务器和后端之间的通信,但是请注意有人对查看数据库感兴趣”。想象一下,HTTPS网站上存在一个SQL注入漏洞,可以转储信用卡数据库。这不是HTTPS的用途

例2 现在,让我们研究另一个HTTPS还不够的场景。基本上,HTTPS保护端到端通信。以下是我的要求:

  • 付款授权必须由请求付款的机器永久签署,并存储在第三方服务中以备将来审核
显然,SSL解决不了这个问题。假设您的web服务是社区的一部分,并且后端服务器与多个web服务器对话。SSL将保护和