Windows Phone 平台的功能驱动安全模型

来源:转载

和Windows Mobile开发平台不同,来自微软的新Windows Phone平台和它的前辈完全不一样,WindowsPhone平台应用程序开发人员应该知道围绕该平台的安全模型,以开发复合指导原则的应用程序。

安全模型

Windows Phone使用了一个资源功能驱动模型,GPS、相机、麦克风、SMS或传感器都可能是资源功能的一个例子,但它们现在都存在隐私和安全问题。

由于隐私和安全问题,用户必须知道如何使用上面提到的那些资源。

所有Windows Phone应用程序项目都在应用程序清单文件WMAppManifest.xml中声明应用程序想要的功能,这个文件位于解决方案文件的属性节点下,如下图所示。

 

▲图 1 解决方案资源管理器

默认情况下,WMAppManifest.xml的内容如下:

<?xml version=”1.0″ encoding=”utf-8″?> 

<Deployment xmlns=”http://schemas.microsoft.com/windowsphone/2009/deployment” AppPlatformVersion=”7.0″><App xmlns=”" ProductID=”{d6527e1c-159b-49c4-9fb3-c75a5bff222f}” Title=”WindowsPhoneSecurityDemo” RuntimeType=”Silverlight” Version=”1.0.0.0″ Genre=”apps.normal” Author=”WindowsPhoneSecurityDemo
author” Description=”Sample description” Publisher=”WindowsPhoneSecurityDemo”>
<IconPath IsRelative=”true” IsResource=”false”>ApplicationIcon.png</IconPath>
<Capabilities>
<Capability Name=”ID_CAP_GAMERSERVICES”/>
<Capability Name=”ID_CAP_IDENTITY_DEVICE”/>
<Capability Name=”ID_CAP_IDENTITY_USER”/>
<Capability Name=”ID_CAP_LOCATION”/>
<Capability Name=”ID_CAP_MEDIALIB”/>
<Capability Name=”ID_CAP_MICROPHONE”/>
<Capability Name=”ID_CAP_NETWORKING”/>
<Capability Name=”ID_CAP_PHONEDIALER”/>
<Capability Name=”ID_CAP_PUSH_NOTIFICATION”/>
<Capability Name=”ID_CAP_SENSORS”/>
<Capability Name=”ID_CAP_WEBBROWSERCOMPONENT”/>
</Capabilities>
<Tasks>
<DefaultTask Name =”_default” NavigationPage=”MainPage.xaml”/>
</Tasks>
<Tokens>
<PrimaryToken TokenID=”WindowsPhoneSecurityDemoToken” TaskName=”_default”>
<TemplateType5>
<BackgroundImageURI IsRelative=”true” IsResource=”false”>Background.png</BackgroundImageURI>
<Count>0</Count>
<Title>WindowsPhoneSecurityDemo</Title>
</TemplateType5>
</PrimaryToken>
</Tokens>
</App>
</Deployment>

们可以看到,默认情况下,应用程序声明了以下的功能。

 

功能 ID功能描述

ID_CAP_GAMERSERVICES访问Xbox Live玩家服务

ID_CAP_IDENTITY_DEVICE访问IMEI,设备电话号码

ID_CAP_IDENTITY_USER访问用户信息

ID_CAP_LOCATION访问用户的位置

ID_CAP_MEDIALIB访问媒体库

ID_CAP_MICROPHONE访问设备麦克风

ID_CAP_NETWORKING访问网络服务,只有当用户为漫游付费才会开启

ID_CAP_PHONEDIALER访问拨打电话的功能

ID_CAP_PUSH_NOTIFICATION访问从互联网服务推送的通知

ID_CAP_SENSORS访问设备传感器

ID_CAP_WEBBROWSERCOMPONENT访问浏览器组件

因为是默认情况,所有功能都被声明了,就这样让应用程序进入市场是不理想的,因此,应用程序开发人员需要移除应用程序不需要的功能。

如果你不声明某个功能,但又在应用程序中使用了它,当应用程序尝试使用该功能时会崩溃,产生UnauthorizedAccessException异常。

功能检测工具

Windows Phone SDK(使用1月份更新的版本)附带了一个有用的工具,它可以深入代码内部,确定应用程序需要哪个功能,以便应用程序清单文件只需要声明需要的功能,而不是每个可用的功能。

功能检测工具位于“%ProgramFiles (x86)%/Microsoft SDKs/Windows Phone/v7.0/Tools/CapDetect”文件夹下,文件名叫做“CapabilityDetection.exe”。

这个工具的语法如下:

CapabilityDetection.exe Rules.xml PathtoXAPFile

它会列出应用程序需要的功能,然后你可以更新项目的WMAppManifest.xml文件,只包括这个工具列出的功能。

小结

在这篇文章中,我们学习了Windows Phone平台的功能驱动安全模型,我希望你发现这个信息有用。


分享给朋友:
您可能感兴趣的文章:
随机阅读: