HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:031409

评论

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

C语言编程—头文件

梦笔生花

C语言 头文件 6 月 优质更文活动

Vue使用axios进行get请求拼接参数的两种方式

不觉心动

6 月 优质更文活动

【Netty】「NIO」(五)多线程优化

sidiot

Java 后端 Netty 6 月 优质更文活动

HAG:首个通过合规STO将RWA通证化应用于比特币Mining的项目

股市老人

Pilota:为什么一个代码生成工具如此复杂丨GOTC Rust系列分享

字节跳动技术范儿

rust GOTC

解决SpringBoot整合Mybatis和Mybatis-Plus不能公用(版本兼容性问题)

不觉心动

6 月 优质更文活动

Redis.confp配置文件的一些配置

不觉心动

6 月 优质更文活动

墨天轮国产关系型分布式数据库榜单解读

墨天轮

数据库 GaussDB TiDB oceanbase polarDB

总结vue3 的一些知识点:MySQL LIKE 子句

雪奈椰子

总结vue3 的一些知识点:MySQL NULL 值处理

雪奈椰子

火山引擎DataLeap:从短视频APP实践来看,如何统一数据指标口径?

字节跳动数据平台

大数据 指标体系 数据研发 指标建设

Vue安装并使用axios发送请求

不觉心动

6 月 优质更文活动

SpringBoot项目使用hutool工具进行HttpClient接口调用的处理(文件上传)

不觉心动

6 月 优质更文活动

npm安装nanoid生成随机id并简单使用

不觉心动

6 月 优质更文活动

使用SpringBoot整合数据库连接池Druid的错误总结

不觉心动

6 月 优质更文活动

从数据开始,构建值得信赖的生成式AI应用

澳鹏Appen

人工智能 nlp 数据标注 ChatGPT 生成式AI

总结vue3 的一些知识点:MySQL 连接的使用

雪奈椰子

2023-06-08:给你一棵二叉树的根节点 root ,返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度

福大大架构师每日一题

算法 福大大

开发一个API Gateway

无心

API Gateway

节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具

字节跳动技术范儿

rust 前端 前端构建

常见的软件可靠性度量和分析方法

穿过生命散发芬芳

可靠性度量 6 月 优质更文活动

SaaS公司如何成为 AI 独角兽?发挥长板:流程、用户需求和数据积累

B Impact

解决vue组件终端报错: error Component name “xxx“ should always be multi-word vue/multi-word

不觉心动

6 月 优质更文活动

3DCAT亮相糖酒会,为元宇宙展会提供实时云渲染支持

3DCAT实时渲染

元宇宙 实时云渲染

Go 空结构体:零内存的魔力

陈明勇

Go golang 空结构体 6 月 优质更文活动

浅谈中小企业如何选择适合自己的网络营销方式

石头IT视角

Milvus Lite 已交卷!轻量版 Milvus,主打就是一个轻便、无负担

Zilliz

Milvus 向量数据库 MILVUSLITE

对话 ChatGPT 理解 Rust 异步网络 io

蓬蒿

rust 编程语言 tokio 异步网路io

10个刚需的Blender小技巧

Finovy Cloud

blender C4D

模型服务文档自动生成,要素追溯关联、结构规范易读|ModelWhale 版本更新

ModelWhale

大模型 企业团队协同 数据开放和利用 学科交叉 人文社科

【零售电商系列】走进亚马逊(一)

小诚信驿站

6 月 优质更文活动

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