通过“分布式系统的8大谬误”反思APP的设计 第四篇 谬误4:网络是安全的 - 简书



通过"分布式系统的8大谬误"反思APP的设计 第四篇 谬误4:网络是安全的 - 简书

谬误4:网络是安全的;

只要与网络服务相关,开发人员都要从开发设计以及业务需求方面考虑网络的安全性,iOS也不例外。所有最基本的攻击类型,网络服务都需要考虑:session劫持,盗取证书,代码注入等等。网络安全是个负责学科,现在先让我们考虑一些和iOS APP相关的内容。

我们只能像相信用户一样,相信用户的设备(译者:这里的意思是用户就是小白,他们不懂得如何保护自己的信息。)。任何一个安装应用的人都可以深入了解到应用的内容(译者:像图片资源,私钥,任何保存在手机上的文件),也可以轻而易举获取手机发送的网络信息。千万不要在你的手机上保存隐私信息(网络访问凭证,认证证书,加密用密钥,等等),而且也不能让在用户面前公布这些信息。

UDID(译者:设备的唯一标示,苹果上称作为UDID;iOS5后这个API被禁止使用了,有人就开发了生成伪UDID的方法,也有人直接使用MAC地址作为设备的唯一序列号。)实际上是一个非常不牢靠的用户认证机制。UDID的确是个非常方便获取唯一标示的方法,无需用户创建账户并登录。我曾经在一款APP的开发中使用UDID来临时标示用户,但这不是个长久的方案。UDID是用户端提供的,是可以被串改的。比方,黑客可以有意伪装成另一个用户;也有可能是无意的,比方用户升级了他们的设备的操作系统或者换了台新的设备。总而言之,一个UDID只是识别了设备,识别不了用户。

移动设备经常会进入到公共网络服务中,而这些公共网络接入点很可能埋伏了不怀好意的黑客。你的APP发送的任何网络数据都可能被同个网络中的人截取。如果你觉得数据非常敏感,必须从加密的链接上发送,苹果提供了Advanced URLConnection样例,延时了如何在建立网络是如何使用基本的http授权,认证(包含了自己发布的证书,如何你想在自己的网络上发送)。一个最简单的例子,NSURLConnectionk完全可以支持https请求,你所要做的尽尽是实现2个代理函数。

原文中提供了一端建立https请求的代码,可以直接去看;

原文地址:http://blog.carbonfive.com/2010/11/29/iphone-distributed-computing-fallacy-4-the-network-is-secure/

译者的一些经验:

1,不要将敏感信息保存在手机上,android手机的所有文件目录都是公开,任何拿到这个手机的都可以从手机上读取文件信息,所以不要将密码不经过加密就保存在文件中。iOS看似安全,实际上越狱后的iPhone的所有目录也是可读的。

2,密码不能以明码保存;前两年许多网站的数据库数据泄露,暴露出密码都是明码保存在数据库中,就连CSDN也是如此。记住,密码必须是MD5后再保存于数据库中。

3,之前有新人非常想不通,为什么网络数据会被人截取;后来,我演示通过wireshark抓包,解包内容。即使是HTTPS也不是牢不可破,Fiddler就可以解密https的数据,当然需要在手机上安装文件。这个的可怕之处在于,黑客可以通过解密https的数据获取你的接口服务的内容,抓住规律。

4,并非只有我们的应用才会调用服务接口,本质上来说,我们的接口压根就是暴露在公众面前,所有人都可以来调用;

关于支付宝交易请求的加密,在服务器端进行数据签名;这样的好处是,不需要在客户端保存签名密钥。


Read full article from 通过"分布式系统的8大谬误"反思APP的设计 第四篇 谬误4:网络是安全的 - 简书


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts