独家: iOS是如何收集用户的地理信息的
从央视的新闻里我们了解到这个故事应该从三年前讲起:
2011年两名英国的工程师发现苹果手机暗藏的一个文件可以记录苹果手机用户曾经去过的地理位置,并通过隐藏文件存储这些信息。迫于多国进行调查,苹果公司发表了Apple Q&A on Location Data(April 27, 2011),并声称这种泄露将会修复。
三年后央视炮火猛喷Apple:http://news.cntv.cn/2014/07/11/VIDE1405043460426933.shtml
"常去地点"这个功能默认开启,并且当定位功能打开时进行记录。
注意!不仅记录了位置甚至记录下了停留时间,经过授权我们打开FB某小编的手机(经测试部分手机已无法显示“历史记录”部分,疑苹果公司私下进行强制更新):
也有网友贴出利用iPhone记录下来他一年的数据制作的可视化行踪图:
iPhone会基于wifi、基站和GPS收集定位信息并保存在:/var/root/Library/Caches/locationd 下的cache_encryptedA.db这个文件内(早期版本的iOS会储存在:/var/root/Library/Caches/locationed/consolidated.db),虽然名中带有“encrypted”字样但并未加密。并且即使关闭“常去地点”这个服务,iPhone仍会通过第三方的应用收集并记录下位置信息。甚至删除这个数据库后仍然会再次生成。
有网友提出了解决方案:
在cydia中,安装untrack插件来自bigboss源,这个插件会定时清理那个数据库文件,不过其本身是个守护程序,占用后台资源。
在央视的报道之后苹果公司发表了了声明,截取部分如下:
在我们所有的设备上,Apple 都让用户能够自主控制定位数据的收集和使用。用户必须自主选择启用 "定位服务",因为它不是一项默认设置。Apple 绝对不允许任何应用,在未曾预先弹出让用户一目了然的提示并得到用户明确同意的情况下,就擅自接收设备的定位信息。这样的提示是强制性的,并且不能被隐藏或覆盖。如果用户改变主意,仅需简单地切换 "开/关" 按钮,即可随时就个别应用或服务退出 "定位服务"。当用户将某个应用或服务的定位数据切换成 "关" 时,它就会停止收集数据。而且,家长还可以使用 "访问限制" 功能,以防止孩子使用 "定位服务"。
Apple 不会在任何时候通过任何用户的 iPhone 去获取其 "常去地点" 或其定位服务的缓存。我们通过用户密码对缓存进行了加密,并且谨防任何应用对其进行访问。为了让用户拥有更大透明度的权益,用户在成功输入其个人密码后,即可看到其设备上收集的数据。而当设备锁定后,在未输入密码的情况下,任何人都不可能查看这些信息。
正如我们前文所述,Apple 从未与任何国家的任何政府机构就任何产品或服务建立过所谓的 "后门"。我们也从未开放过我们的服务器,并且永远不会。对于我们而言,这些都是必须坚守、绝不妥协的。
f-secure的文章中称:每天,iPhone会向Apple公司传送两次你的位置信息,当你在iTunes的安装过程中伴随着这种具有高度误导性的提示下并选择了Agree:
如果不用阴谋论的思路去想这件事,其实苹果公司这项功能还是蛮便民的,例如小编有一天在快下班的时候解锁手机,在通知中心就看到提示:“您回家预计需要30分钟,某某路段堵车”,虽然当时没有截图,但是如果只是一个普通用户,这种收集信息的行为还算可以接受。不过比较恶心的地方就是“常去地点”功能就算关闭,iOS还是会记录你的地理位置,只不过不显示出来而已,除非关闭GPS功能。
先不说了,感觉自己萌萌哒,该吃药了。
如果您有任何关于任何互联网界的最新消息或爆料,欢迎联系FB情报组 (fig[@]freebuf.com)
参考资料:
https://alexlevinson.wordpress.com/2011/04/21/3-major-issues-with-the-latest-iphone-tracking-discovery/
http://www.f-secure.com/weblog/archives/00002145.html
http://radar.oreilly.com/2011/04/apple-location-tracking.html
http://blog.fortinet.com/iphone-tracking/
http://tech.sina.com.cn/mobile/n/apple/2014-07-12/20559490246.shtml
http://www.courbis.fr/Localisation-iPhone-votre.html (法语)
http://petewarden.github.io/iPhoneTracker/
- 基于VGG19的识别中国人、韩国人、日本人分类器
- 机器学习算法GBDT的面试要点总结
- 了解、接受和利用Java中的Optional (类)
- 一个强化学习 Q-learning 算法的简明教程
- 天池大赛—商场中精确定位用户所在店铺 作品分享
- 代码实战:从单体式应用到微服务的低风险演变
- 数据转换:从单体式应用到微服务的低风险演变
- JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)
- 如约而至,Java 10 正式发布!
- Intellij IDEA查看所有断点
- Spring Boot国际化支持
- 有记忆会推理的可微分神经计算机,DeepMind现在开源了代码
- Spring Boot整合Thymeleaf模板引擎
- Spring Boot实现热部署
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Go 每日一库之 gabs
- 如何将Flink应用的日志发送到kafka
- 锦囊篇|Java中的SPI机制
- webpack实战——生产环境配置【上】
- 深度阅读之《Concurrency in Go》
- 为了不让代码看起来像一坨* 我在工作中反复用了这个
- 在 Go 语言中 Patch 非导出函数
- SpringCloud 配置中心服务端配置解析流程分析
- Qt多线程编程之线程池
- PWN:Tcache Attack原理
- [Go]GO语言实战-GO-FLY在线客服cobra库命令行参数解析
- [Go]GO语言实战-GO-FLY在线客服gorm导入sql文件
- Day7.数据类型-集合
- 详解一条查询select语句和更新update语句的执行流程
- JSP 开发环境搭建与项目运行(二)