写点什么

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

评论

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

学生管理系统架构

豪毅

架构实战营

以开发之名 | 美好出行体验,“管家”一站实现

最新动态

Python小白福音!Github开源了一款神器....

Jackpop

Vue进阶(幺伍叁):Vue-highlight 实现代码高亮

No Silver Bullet

Vue highlight.js 10月月更

模块一作业

Geek_1d37ea

代码简洁之道:一行Python代码解决问题是时尚还是玄学

博文视点Broadview

Flux架构思想在度咔App中的实践

百度Geek说

百度 架构 后端 短视频 Flux

架构训练营 - 第一周作业

二手攻城师

「架构实战营」

敏捷QA需要编写测试用例吗?

BY林子

测试用例 敏捷测试

数仓无损压缩算法:gzip算法

华为云开发者联盟

算法 deflate 无损 gzip 压缩数据

架构实战营 模块一作业 微信业务架构图 & 学生管理系统

dog_brother

「架构实战营」

网易云信被纳入 Gartner 2021年《CPaaS 市场指南》研究报告

网易云信

音视频 云通信 Gartner

游戏数字资产复用——有哪些是你需要知道的?

龙智—DevSecOps解决方案

游戏开发 游戏引擎 perforce

只需2步,教你在Vue中设置登录验证拦截

华为云开发者联盟

Vue 浏览器 Token pringboot 登录验证

实时大数据Flink知识结构(超全整理,附知识脑图)

大象灵感

大数据 flink spark 实时数仓 流处理

模块一作业

美好心情

「架构实战营」

OKR与影响地图,别再傻傻分不清

华为云开发者联盟

OKR 敏捷 影响地图 规划 目标

华为云网络覆盖全球2500+站点,打造高品质、低成本接入体验

华为云开发者联盟

RTC 华为云 媒体服务 LiveVideoStack

短短 146 天就成为 Apache APISIX Committer,我是怎么做到的?

API7.ai 技术团队

成长笔记 API网关 社区 Apache APISIX

如何实现CNN特征层可视化?终于懂了....

Jackpop

架构实战营模块 1 作业

VegetableBird

架构实战营 #架构实战营 「架构实战营」

模块一作业及总结

Thomas

架构实战营

左手 CloudWeGo,右手 Kratos ,如何选?

baiyutang

Go golang 微服务框架 10月月更

第一周作业

赵先生

架构实战营

Java 有关 Integer 一个好玩的包装类

HoneyMoose

模块一

引导行业发展!旺链科技加入“可信区块链推进计划”

旺链科技

区块链 数字经济 产业区块链

Java 包装类和基本类型

HoneyMoose

学习总结(第一周)

Geek_1d37ea

架构实战营

网络生病了怎么办?看华为云网络测量如何“悬丝诊脉”

华为云开发者联盟

华为云 云网络 网络故障 网络测量 SDN架构

2021年10月国产数据库流行度排行解读 浅谈基础软件发展之道

墨天轮

数据库 华为 opengauss Gauss DB 国产数据库

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