深入探索 .NET 响应式扩展与 Windows Phone 安全机制
1. .NET 响应式扩展(Reactive Extensions for .NET)
在开发过程中,有时需要对 WireUpKeyEvents 函数做些小改动。具体来说,将城市名称 KeyUp 事件的 Observable 序列生成移到一个单独的 GetKeys 方法中。下面是替换后的 WiredUpKeyEvents() 函数代码:
private void WireUpKeyEvents()
{
GetKeys();
_keys.ObserveOn(Deployment.Current.Dispatcher).Subscribe(evt =>
{
if (txtCityName.Text.Length >= 5)
{
weatherClient.GetWeatherAsync(txtCityName.Text, conCountry);
}
});
}
完成这些修改后,就可以运行应用程序了。按下 F5 运行,你会发现应用程序的行为与之前的示例基本相同,仍然是输入城市名称,然后获取该城市的天气信息。不过,在后台,输出窗口中会打印一些消息,表明 Observable 序列正在根据按键序列 Observable 集合中的新数据(新输入的城市名称)进行释放。
虽然目前在 Windows Phone 平台上可能还没有 CreateChannel 方法,但在不久的将来可能会出现。一旦有了该方法,就可以通过 Observable.FromAsyncPattern 方法,使用代码连接异步 Web 服务调用的开始和结束,增强之前的示例。目前,在 Silverlight(桌面客户端)或运行完整版本 .NET Framework 的客户端上,仍然可以利用 Rx.NET 这一强大功能。
响应式扩展为 .NET 实现了观察者模式,通过构建两个应用程序展示了 Rx.NET 的特性,包括将事件表示为可观察数据源、无缝并发异步处理和错误处理。同时还涉及到 Marble 图以及构建 Rx.NET 应用程序的一些主要设计准则,学习了管理不可靠数据链接的技术和使用 Rx.NET 框架取消正在进行的操作的原则。随着并发异步编程成为常态,Rx.NET 为这种编程方式提供了强大的框架,包括云编程。
2. Windows Phone 安全机制概述
Windows Phone 的设计和操作都以消费者为目标,因此微软精心设计了一系列内置安全功能,旨在保护用户免受有意和无意的伤害。该平台具备保护数据传输和存储安全的能力,通过集中式应用认证流程,让消费者放心,不会有恶意应用被下载和安装到设备上。此外,如果手机丢失或被盗,每台设备都配有免费的基于 Web 的工具,用户可以远程控制设备,包括锁定和清除所有数据。
下面将从应用安全、网络安全、数据安全和设备安全四个领域分析 Windows Phone 的安全特性,并学习如何使用平台提供的工具来解决每个领域的特定安全问题。
3. 理解应用安全
在理想情况下,所有 Windows Phone 应用都应来自合法来源并正常运行。但实际情况是,许多应用会违反规则,因此需要采取保障措施来防止恶意行为。Windows Phone 平台在应用安全方面,提供了验证应用作者身份的保障措施,并对每个移动应用的执行进行沙盒化处理。
3.1 Windows Phone 应用商店
回顾过去,Windows XP 早期,由于操作系统易受恶意程序攻击,微软受到了广泛批评。尽管系统自带了防护措施,但需要用户手动激活,而用户很少这么做。这让微软意识到,必须承担起保护用户免受已知和潜在危害的责任。
由于移动设备包含大量个人信息,且容易丢失或放错地方,因此对应用的监控尤为重要。为了既能控制应用的构建和部署,又能鼓励开发者的创造力,微软创建了 Windows Phone 应用商店,它是所有 Windows Phone 应用的唯一在线分发点。
3.2 不可抵赖性:数据完整性和来源证明
应用商店的首要目标是确认应用作者的身份。在互联网时代,虚假身份的情况很常见。如果没有集中的审批机制,恶意应用可能会伪装成合法应用,窃取用户的个人信息。在软件安全领域,不可抵赖性指的是确保应用确实来自其声称的来源。
在 Windows Phone 平台上,应用的来源和安全性在应用认证过程中得到确认,这是所有应用的必要步骤。开发者将应用提交到应用商店并支付费用后,微软会进行一系列自动和手动测试,以确认应用的安全性和一定程度的可靠性。目前,未经认证的应用无法加载到手机上。未来,可能会允许企业客户绕过应用商店,使用自己的企业应用商店,但目前这只是一种可能性。所有开发者都必须在应用商店注册,并提供合法的身份验证,验证通过后会获得代码签名证书,以证明应用的来源。
3.3 知识产权保护
软件盗版是软件开发行业面临的一个严重问题,无论是大型软件公司还是小型移动应用开发团队都深受其害。为了保护应用免受盗版侵害,微软要求在 Windows Phone 设备上运行应用前,必须有应用商店颁发的有效应用许可证。这意味着,即使有人绕过应用商店将应用加载到设备上,由于没有许可证密钥,应用也无法运行。
3.4 安全的应用行为
应用商店的审批过程包括一系列认证测试,以禁止有风险的应用加载到用户的手机上。有风险的应用可能包含恶意软件或病毒,或者包含可能导致恶意代码执行的代码结构。所有提交到应用商店的应用都将接受恶意软件筛查,以确认应用是否无病毒和恶意软件。通过这些测试后,还会进行额外测试,以确认应用仅使用类型安全的 Microsoft Intermediate Language (MSIL) 代码编写,避免软件缓冲区溢出问题。此外,应用不得实现任何安全关键代码。
4. 向 Windows Phone 应用商店提交应用
要将应用提交到 Windows Phone 应用商店,需要完成以下步骤:
4.1 生成 XAP 提交文件
应用商店要求的提交文件是 XAP 文件,它在构建 Windows Phone 应用时生成,是一个包含应用运行所需所有元素的压缩文件。生成 XAP 文件的步骤如下:
1. 在 Visual Studio Express for Windows Phone 中打开 Windows Phone 应用项目。
2. 将解决方案配置选项设置为“Release”,如下图所示:
3. 在解决方案资源管理器中,右键单击解决方案名称并选择“构建”。如果构建成功,Visual Studio 将创建 ProjectName.xap 文件,其中 ProjectName 是解决方案的名称。
4. 找到步骤 3 中创建的 ProjectName.xap 文件。打开 Windows 资源管理器,导航到项目目录的 bin/Release/ 文件夹,应该能找到该文件,这就是要上传到应用商店的文件。
4.2 上传 XAP 文件到应用商店
在上传文件到应用商店之前,需要在 http://create.msdn.com/ 创建应用商店登录凭据。打开应用商店网站后,点击“Join to submit your apps & games”链接,按照向导创建用户名和密码。创建好凭据后,按照以下逐步指南将应用提交到应用商店:
1. 登录 Windows Phone 应用商店( http://create.msdn.com/ ),创建一个新的应用提交。
2. 当提示时,找到上一步创建的 XAP 文件(位于项目目录的 bin/Release/ 文件夹中),并按照说明将其上传到应用商店。
3. 输入应用的描述,选择其类别,并上传应用图标。
4. 选择应用要发布的国家,并设置定价。
5. 在输入应用详细信息(描述、类别和定价)时,应用商店会验证 XAP 文件,并确认是否可以进行进一步的可靠性和安全性测试。
6. 如果基本的 XAP 文件验证失败,会收到失败通知,需要重新开始整个过程。
7. 如果验证成功,会出现一个屏幕,允许选择在应用通过认证后立即向客户提供应用,或者等待决定发布的时间。
8. 应用商店的自动化流程会打开提交的 XAP 文件,更新应用清单文件( WMAppManifest.xml ),添加唯一的产品标识符和应用所属的 Windows Phone 设备中心(例如,媒体 + 视频中心)。此外,还会创建一个头文件 WMAppPRHeader.xml ,用于保护应用的数字版权。最后,会对应用清单文件进行额外更新,列出应用的所有安全功能,并将应用重新打包成新的 XAP 文件。这个新的 XAP 文件将部署到应用商店的实际 Windows Phone 设备上进行认证测试。
认证测试包括手动和自动化验证,以确保应用符合微软关于 Windows Phone 应用的内容、安全、性能和可靠性的规则。其中一条规则是应用必须仅使用文档完善的 Windows Phone API 方法,以确保应用不会表现出恶意行为。如果应用违反任何规定,将不会发布,并会收到包含问题行为详细信息的失败报告。如果应用成功通过认证测试,XAP 文件将被签名,并根据步骤 5 中选择的选项,从应用商店提供安装。
需要注意的是,更新应用时,需要经历与原始应用相同的认证步骤。
5. 沙盒执行和执行管理器
沙盒执行的概念是每个应用在自己的隔离环境(沙盒)中运行,这样它就无法访问同一设备上不同沙盒中运行的应用。Windows Phone 平台实现了沙盒执行的概念。在同一 Windows Phone 设备上运行的应用相互隔离,必须使用定义良好的标准机制与 Windows Phone 平台提供的服务进行通信。系统文件和资源对用户应用是屏蔽的。为了存储和检索特定于应用的配置数据,应用必须使用独立存储,它被设计为只能由当前运行的应用访问。
为了进一步确保 Windows Phone 平台的安全性和响应性,微软内置了额外的安全措施。这些措施包括使用执行管理器,以及仅授予应用运行绝对必需的权限。执行管理器会根据某些定义的约定监控应用的资源使用情况。例如,如果执行管理器认为前台应用无响应,可能会终止后台应用。同样,如果应用对手机资源提出过多请求,执行管理器可能会关闭该应用。
Windows Phone 应用平台还会尽量减少授予应用的权限数量。例如,如果应用不需要使用位置服务库,Windows Phone 将为该应用创建一个不包含该库访问权限的自定义执行环境,从而减少应用可能受到攻击的面。
6. 私有应用分发选项
随着 Windows Phone 7.5 的发布,开发者可以选择不将应用列在应用商店中,而是将其提供给特定组织内的一组测试用户。这是通过深度链接过程实现的,应用只能通过在应用认证过程中获得的唯一 URL 进行下载,在应用商店搜索中无法发现该应用。然而,仅靠深度链接的保护是不够的,因为任何获得该 URL 的人都可以在其设备上安装应用。因此,除了深度链接,对于不打算公开分发的应用,最好通过编程实现安全机制,限制特定人群的访问。
7. 实施网络安全
如果应用通过网络访问敏感数据,确保数据在从远程位置传输到 Windows Phone 设备的过程中进行加密至关重要。同样,如果要访问的 Windows Phone 应用需要身份验证,在移动设备和该应用之间实现安全的身份验证机制也很重要。Windows Phone 平台允许实现这两个目标。任何时候需要从远程位置传输敏感数据,都应使用安全套接字层 (SSL) 协议,这是加密数据的行业标准。如果环境需要安全身份验证,可以在 Windows Phone 设备上使用数字证书进行身份验证,从而无需用户名和密码。
7.1 使用 SSL 保护连接
SSL 协议是一种复杂的方法,用于保护客户端(Windows Phone 设备)和云服务之间的连接,它利用了非对称加密和认证机构 (CA) 层次结构的概念。当 Windows Phone 设备发起与远程服务的安全连接时,它会请求该服务的证书。然后检查该证书,并验证颁发该证书的 CA。
以下是建立 SSL 连接的大致流程:
graph LR
A[Windows Phone 设备发起连接] --> B[请求远程服务证书]
B --> C[检查证书]
C --> D{证书是否有效}
D -- 是 --> E[建立安全连接]
D -- 否 --> F[连接失败]
通过以上对 .NET 响应式扩展和 Windows Phone 安全机制的介绍,开发者可以更好地利用这些技术和功能,开发出更安全、更高效的应用程序。
深入探索 .NET 响应式扩展与 Windows Phone 安全机制
7.2 配置证书进行安全身份验证
在需要安全身份验证的环境中,可以在 Windows Phone 设备上使用数字证书来替代传统的用户名和密码方式。以下是配置证书进行安全身份验证的一般步骤:
-
获取数字证书
- 可以从受信任的证书颁发机构(CA)购买数字证书,也可以在企业内部环境中使用自签名证书。
- 确保证书的格式为 Windows Phone 设备支持的格式,如
.pfx或.cer。
-
将证书安装到 Windows Phone 设备
- 可以通过 USB 连接将证书文件传输到设备上。
- 或者使用企业移动设备管理(MDM)解决方案批量部署证书到多个设备。
-
在应用程序中使用证书
- 在代码中加载证书文件。例如,使用
X509Certificate2类来加载.pfx格式的证书:
- 在代码中加载证书文件。例如,使用
X509Certificate2 cert = new X509Certificate2("path/to/certificate.pfx", "password");
- 在建立网络连接时,将证书附加到请求中。例如,在使用 `HttpWebRequest` 时:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://example.com");
request.ClientCertificates.Add(cert);
通过这些步骤,可以在 Windows Phone 设备上实现基于证书的安全身份验证,提高应用程序的安全性。
8. 数据安全
数据安全是 Windows Phone 安全机制的重要组成部分,主要涉及数据的存储和传输安全。
8.1 数据存储安全
如前面提到的,应用程序应使用独立存储(Isolated Storage)来存储特定于应用的配置数据。独立存储为每个应用提供了一个隔离的存储空间,其他应用无法直接访问。以下是使用独立存储的基本操作示例:
// 写入数据到独立存储
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("data.txt", FileMode.Create, isoStore))
{
using (StreamWriter writer = new StreamWriter(isoStream))
{
writer.WriteLine("This is some sensitive data.");
}
}
// 从独立存储读取数据
using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("data.txt", FileMode.Open, isoStore))
{
using (StreamReader reader = new StreamReader(isoStream))
{
string data = reader.ReadLine();
Console.WriteLine(data);
}
}
8.2 数据传输安全
在数据传输方面,使用 SSL 协议可以确保数据在网络传输过程中的加密和完整性。如前面所述,当应用程序需要从远程服务器获取敏感数据时,应使用 HTTPS 协议,它基于 SSL/TLS 进行加密传输。
9. 设备安全
设备安全主要关注如何保护 Windows Phone 设备本身的安全,防止丢失、被盗或被未经授权的访问。
9.1 远程锁定和数据擦除
微软为 Windows Phone 设备提供了免费的远程锁定和数据擦除支持。如果设备丢失或被盗,用户可以通过基于 Web 的工具远程锁定设备,防止他人访问设备上的数据。如果设备无法找回,还可以远程擦除设备上的所有数据,确保个人信息的安全。
使用远程锁定和数据擦除功能的步骤如下:
1. 访问 https://account.microsoft.com/devices ,使用与设备关联的 Microsoft 账户登录。
2. 在设备列表中找到丢失或被盗的 Windows Phone 设备。
3. 选择“锁定”或“擦除”选项,按照提示操作。
9.2 设备密码和生物识别认证
为了进一步增强设备的安全性,用户可以设置设备密码或使用生物识别认证(如指纹识别、面部识别)。这些措施可以防止他人在没有授权的情况下访问设备。
10. 总结
通过对 .NET 响应式扩展和 Windows Phone 安全机制的全面介绍,我们了解到 Rx.NET 为并发异步编程提供了强大的框架,能够帮助开发者更高效地处理事件和数据。而 Windows Phone 的安全机制从应用安全、网络安全、数据安全和设备安全四个方面进行了全方位的保护,确保用户的个人信息和设备安全。
开发者在开发 Windows Phone 应用程序时,应充分利用这些技术和功能,遵循安全最佳实践,开发出既安全又高效的应用程序。同时,随着技术的不断发展,安全威胁也在不断变化,开发者需要持续关注安全领域的最新动态,及时更新和改进应用程序的安全措施。
以下是一个简单的总结表格:
| 领域 | 主要措施 |
| ---- | ---- |
| .NET 响应式扩展 | 将事件表示为可观察数据源,实现并发异步处理和错误处理 |
| 应用安全 | 应用商店认证、代码签名、沙盒执行、最小权限授予 |
| 网络安全 | 使用 SSL 协议加密数据传输,配置数字证书进行身份验证 |
| 数据安全 | 使用独立存储存储数据,使用 SSL 加密数据传输 |
| 设备安全 | 远程锁定和数据擦除,设置设备密码和生物识别认证 |
通过这些措施的综合应用,可以构建一个安全可靠的 Windows Phone 应用开发环境。
超级会员免费看
2

被折叠的 条评论
为什么被折叠?



