写点什么

Windows 应用商店中应用的安全

  • 2012-12-06
  • 本文字数:1307 字

    阅读完需:约 4 分钟

在过去,有一个设想,仅仅流行的应用和服务才会被攻击。但是最近,即使是很少人用甚至无人问津服务,也很容易地受到黑客的仔细研究。在最近一次的 Microsoft Build 会议上, Josh Dunn 讨论了一些在 Windows 8 应用中发现的常见漏洞。

避免乐观的错误

Windows 8 应用中,一个主要的漏洞来自不正确的使用 MSApp 类的 execUnsafeLocalFunction 方法。该功能在应用中禁止了脚本注入验证的规则,使应用与展现客户信息的网站面对相同的漏洞。

当结合了过度的应用许可后,脚本注入是特别让人不愉快的事情。例如:假设某个应用具有访问用户图片库的能力。一旦黑客注入了脚本,那么,脚本也同样具有获取访问该图片库的权限。

虽然看上去是显而易见的,但是 eval 函数却是另一个能够将漏洞引入到应用中的危险功能。所以,一般情况下,微软劝告开发者,避免在程序中使用 eval 函数和带有 unsafe 关键字的功能代码。

使用 javascript 库时,需要特别当心。浏览器中使用安全的库,在 windows 8 应用中使用,却不一定是安全的。 WinJS 推荐使用 WinJS,因为 microsoft 将它特别设计为 “缺省安全的”。我们假设,随着时间的推移其它库将都采纳这一做法。

另一个减少问题的方式是减少应用可注册的能力。在许多情况下,应用实际上不需要使用一些能力。比如:应用无需使用“Documents”(Windows.UI.Xaml.Documents)组件加载并保存文档,当你仅仅使用它,在应用中为了一个特殊的文件类型将要扫描库时。

一个于此相关的问题是对文件扩展名的不必要的注册,一个常见的错误是,因为应用将一些数据存储在文本文件中,就将此应用注册成文本文件处理器。这导致的结果是,每当打开一个文本文件时,该应用就会被放进可启动的应用程序列表之中。这里的区别是“使用”文本文件和“处理”文本文件的能力。

其他开发者可能误开启的能力,如企业认证和共享用户证书。企业认证应当仅在企业内部应用访问域资源时使用。它使应用代表用户。共享用户证书是针对硬件证书和智能卡的。

处理客户数据的责任

当向用户请求数据时,,重要的是从一开始就要建立信任关系。一部分是要确切地告诉用户,要收集什么样的数据,为什么要收集,用户如何退出正在进行的数据收集。应用程序应尽可能在无需私人身份信息的情况下工作。

在传输私人身份信息(PII)时,总是使用安全的连接。若允许信息以非加密的方式显现在 URL 中,就会导致许多问题。或者,更好的做法是,避免收集个人信息,比如序列号和 IP 地址。

规避这一问题的一种方式是使用 GetPackageSpecificToken 方法。该令牌对于每一个应用 / 硬件对是唯一的,它可使你的应用在不使用任何个人身份信息的情况下识别给定的设备。不好的方面是,当多个应用一起工作时,它们需要一种将各自的令牌连接起来的方法。

当使用用户名口令模式工作时,要设法确保将它们存储在安全凭证存储器中 ( Windows.Security.Credentials ) 中,而不是文件或者应用环境中。

查看英文原文 http://www.infoq.com/news/2012/10/Win8-App-Security


感谢马国耀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-12-06 08:031511

评论

发布
暂无评论
发现更多内容

LP流动性挖矿系统开发详细需求丨LP流动性挖矿dapp开发源码部署

V\TG【ch3nguang】

ES6新特性(三)

阡陌r

JavaScript ES6 Promise 迭代器 生成器

Linux ln命令:建立链接文件

芯动大师

广州软件外包公司开发流程详解

V\TG【ch3nguang】

如何找到靠谱的软件外包开发公司?

V\TG【ch3nguang】

After Effects 2023 for Mac(Ae视频特效制作) v23.6永久激活版

mac

AE2023 苹果mac Windows软件 After Effects 2023 视频特效编辑软件

Linux touch命令:创建文件及修改文件时间

芯动大师

KK 架构训练营 - Week1

jjn0703

架构

API商品数据接口调用实战:爬虫与数据获取

Noah

API 文档 API 开发

ES6新特性(四)

阡陌r

JavaScript set map ES6 Proxy

DAPP合约质押挖矿系统开发(源码搭建)

l8l259l3365

Premiere Pro 2024 for Mac(pr 2024视频编辑软件)v24.0完美激活版

mac

苹果mac Windows软件 视频编辑软件 Premiere Pro 2024 pr2024

Linux cp命令:复制文件和目录

芯动大师

从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享

JYeontu

前端 Electron gitee 免费图床

手机旗舰芯片巨头较量,都有哪些“秘密武器”?

脑极体

AI

Python 模块:创建、导入和使用

小万哥

Python 程序员 软件 后端 开发

区块链系统开发软件外包公司

V\TG【ch3nguang】

2023-10-28:用go语言,给定一个n*m的二维矩阵,每个位置都是字符, U、D、L、R表示传送带的位置,会被传送到 : 上、下、左、右, . 、O分别表示空地、目标,一定只有一个目标点, 可以

福大大架构师每日一题

福大大架构师每日一题

Downie 4 for mac(视频下载工具) 4.6.32中文激活版

mac

视频下载工具 苹果mac Windows软件 Downie

Illustrator 2023 for mac(ai2023矢量图形编辑软件) v27.9完整激活版

mac

ai2023 苹果mac Windows软件 矢量图形编辑软件 Illustrator 2023

DeFi(智能合约)流动性质押挖矿系统开发理念丨python合约编程教程

V\TG【ch3nguang】

Windows应用商店中应用的安全_语言 & 开发_Jonathan Allen_InfoQ精选文章