导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Windows Phone 8 的 Web 服务安全性

2014/6/18

适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

Windows Phone 应用能够与全世界的计算机交换数据。但是,数据的价值越高(如金融数据或个人信息),确保应用使用体现该数据价值的安全过程请求和接收数据的重要性也就越高。本主题介绍了几种不同方式,可在 Windows Phone 应用调用 Web 服务时帮助确保应用程序的安全。

介绍的三个主要领域如下所示:

  • 身份验证

  • 通信加密

  • 用户名和密码提示

驻留在 Internet 上仅用于向应用提供数据的应用称为 Web 服务,因为它们旨在通过 Internet 响应许多不同平台上的各种请求应用程序,这些平台包括:网页、移动设备(如 Windows Phone)、台式计算机和可以支持相对较低级别的基本 Internet 通信协议的其他任何设备。对许多公共数据的请求非常简单,仅需要 HTTP 请求即可获取 Windows Phone 上使用的数据。例如,许多国家的政府都发布了 Web 服务,这些服务可以向请求的任何应用提供天气预报、公交车时刻表和其他广泛使用的公共数据。

但是,即使不是多数,也有相当数量的 Web 服务所交换的数据对于 Web 服务、Windows Phone 应用或者对于使用该应用的用户都有一定的价值。在这些情况下,根据信息的价值,我们强烈建议您了解下列安全问题并做出有关的决定,从而您构建的客户端能够尽可能安全地调用 Web 服务,并且其安全性足以保护需要交换的数据。

建立标识

身份验证是一个以程序或程序用户的形式向另外一个应用断言您标识的过程。它还适用于其他方向。例如,尽管您向购物网站发出了一个请求,但是 HTTPS 协议要求网站向您的 Web 浏览器提供身份证明(称为凭据声明),以便证明该网站的真实性。

如果应用需要获取的数据含有一些值,则提供该值的 Web 服务可能要求您自行进行身份验证(即以客户端身份“登录”)以确定您是否具有访问该数据的权限。

使用基本身份验证在 Windows Phone 中建立标识时,应注意未加密的数据。基本身份验证是一个简单的协议,需要向网站或服务发送用户名和密码(使用 base64 编码以启用 HTTP 不支持的字符)。但是,基本身份验证无法出于安全目的而加密用户名和密码;因此,下列信息非常重要:

重要说明重要说明:

因为基本身份验证不会加密用户名和密码数据(除非您自行加密数据或数据流),HTTP 请求的侦听器可以解码用户名和密码,应用会无意中会暴露应用帐户或用户帐户,致使其受到损害。因此,我们强烈建议您结合 HTTPS 协议使用基本身份验证,这会加密通信,以便进行数据保护。有关 HTTPS 的更多信息,请参阅下面有关保护通信的章节。

还可以使用其他身份验证协议来断定您应用的身份或 HTTP(和 HTTPS)上应用用户的身份。例如,尽管某些 Web 服务要求使用 OAuth 1.0(因为无需加密连接),但是以前的警告仍然适用:我们强烈建议对任何未加密身份验证协议使用加密的连接,例 HTTPS。有关更多信息,请参阅 OAuth 主页OAuth 1.0 协议

Windows Phone 支持除 HTTP 以外的其他通信选项。(有关更多信息,请参阅 Windows Phone 8 的套接字。)但是,通常情况下,使用 HttpWebRequestWebClient 类或使用其他库提供的特殊类实现您的身份验证机制,即使不是多数,也有相当数量的机制是使用这些类构建的。例如,Windows Phone 的 OData 客户端库帮助您使用 HTTP 来获取 OData 服务中的数据,而不是直接使用这些类中的任何一个。有关使用此库的示例,请参阅如何使用 Windows Phone 8 的 OData 服务

HttpWebRequestWebClient 类会限制对某些 HTTP 标题的访问,有关更多信息,请参见 WebHeaderCollection 的“备注”部分。

保护通信安全(加密)

加密是一个使数据请求和数据响应尽可能难以截获和理解的过程。如果您向 Web 服务发送用户名和密码以验证您是应用的用户(或代表用户对应用执行操作),则几乎可以肯定,该请求在往返 Web 服务的途中会通过许多路由器。为了防止暴露您的身份凭据(以及任何潜在的敏感数据),应用和 Web 服务需要合作才能将其呈现为除应用和 Web 服务外,其他都基本无法读取的内容。执行此操作的标准机制是使用 HTTPS 连接进行连接,这是一个通过安全套接字层 (SSL) 的 HTTP 连接或传输层安全性 (TLS) 连接。

在大多数情况下,无需进行任何操作即可为 Windows Phone 应用启用此连接,但使用以 https:// 协议方案开头的地址除外。然后,Windows Phone 检查 Web 服务返回的证书,如果证书来自 Windows Phone OS 7.1 的 SSL 根证书中列出的一个受信任授权机构,则 Windows Phone 应用平台会结合使用证书和 Web 服务加密所有后续通信,包括之前介绍的身份验证凭据交换。

尽管您可以在 Windows Phone 上安装受信任的证书,但在当前版本中,Windows Phone 应用平台不会向应用公开这些证书的值。因此,在当前版本中,无法使用安装在根存储中的证书实现相互验证方案(在这些方案中,客户端除接收一个证书外,还会将自己的证书发送到 Web 服务)。

敏感用户信息提示

应用通常会要求用户提供用作凭据的用户名和密码,以对使用 Web 服务或网站的用户进行身份验证,但是如果每次在应用运行时都要求进行此操作,用户可能会非常恼火。

我们强烈建议在每次应用需要从用户处了解用户名和密码时,应用给予提示。如果您尝试将凭据保存在手机上,那么将存在暴露这些凭据的风险,例如 Windows Phone 丢失或被盗。使用 ProtectedData 类和相关加密类可以加密和存储应用中的敏感信息。有关更多信息,请参阅如何加密 Windows Phone 8 的数据

如果您计划创建一个 Web 服务来向 Microsoft 推送通知服务发送推送通知,我们建议您设置一个经过身份验证的 Web 服务,因为通过 HTTPS 接口进行通信更加安全。经过身份验证的 Web 服务对于它们每天可以发送的推送通知数量没有限制。另一方面,未经身份验证的 Web 服务限制为每天每个订阅 500 推送通知的速率。有关更多信息,请参阅设置已经过身份验证的 Web 服务以发送 Windows Phone 8 的推送通知

显示:
© 2015 Microsoft