昨天笔者刚刚推送完关于隐私泄露的文章,今天京东就被捅出来个大新闻。有网友发现京东金融的 Android App 存在随意窃取用户隐私的情况。
相信不少京东用户都在使用京东金融这款 App,相较于体量更大、以商城为主体的京东 App,京东金融更够更方便地管理白条等,同时还能进行一些理财。
有网友发现在京东金融 App 打开的时候,不论是新产生的系统截图,还是通过相机新拍照的照片,都会被京东金融 App 自动复制到它自己的目录下。
笔者在看了一些流传的实锤视频后,发现京东金融 App 会将新产生的截图或照片直接复制到下面这个路径:
/sdcard/Android/data/com.jd.jrapp/cache/uil-images
其中新产生的图片会被重命名为一个和其他文件类似的缓存文件。
这确实是一个在后台主动手机用户隐私的行为,非常可疑,但是没有任何一个实锤表示京东金融 App 在收集到这些图片之后将这些图片主动地上传到京东的服务器,如果京东金融 App 只是出于某种目的对这些可能存有隐私内容的图片进行了缓存,但并没有主动上传,那么窃取隐私一事是站不住脚的。
之所以很多网友集火京东金融说他们窃取了用户隐私,是因为有一些用户发现可能是别人的一些图片出现在了自己的手机里,因而很多网友认为京东金融 App 窃取了用户的隐私。
但是事实是什么样的呢?
笔者重复看了微博上流传的实锤视频,视频中只提到了图片文件被复制,但并没有提到文件夹下的其他文件是来源于其他用户的。
为了防止京东金融通过热更新修复这个曝光出的问题,笔者在自己的 Android 手机上、在没有运行京东金融的情况下打开了这个目录,检查之后发现并没有什么异常,其他的文件都是正常的图片缓存。
有的网友看到的一些所谓的「来自其他用户的图片」很可能不实。
根据京东金融官方的公告,这个功能已经通过热更新的方式下线,由于 Android 是允许 App 进行热更新的,所以在你启动 App 的时候它有可能就已经进行了一些功能更新或问题修复。
目前这个功能已经被屏蔽了,如果你再想通过目前的京东金融 App 复现它已经不现实。
看到这里你可能会觉得,空格,你这次是不是收钱了,给京东洗地。
并不是,这一次京东金融 App 确实绝大概率是被冤枉的。
实际上曝光出这个事情的网友很有可能不是开发者,只是在乱翻手机文件时惊异地发现了这个问题,联系到之前一些互联网公司的作恶行为,便将这个事情加以「窃取用户隐私」的标签推到了微博上。
恰巧国内的网友又因为一些历史的原因对于隐私问题非常敏感,因而整个事件被引爆。
实际上京东已经手握着大把的用户隐私了,如果他们真的想收集用户的个人敏感信息,用不着这么麻烦,而且还做得这么容易被发现。
这个「疑似窃取用户隐私」的功能实际上只是 App 里用到的一个小组件。只是一个用于优化客户端体验的手段。
知乎上已经有非常多更专业的开发者或者兴趣爱好者对京东金融 App 的代码,以及其 App 用到的这个组件进行了分析等,最终得出的结论是京东金融 App 并没有在这上面做有攻击性的事情。
根据京东官方的说法,这个功能的存在是为了便于图片快捷地发送和分享,实际上这个功能所做的事情可以被更加准确地描述为:
针对系统内生成的新图片自动生成小尺寸的缩略图,做一次缓存,便于在有需要的时候能够更加有性能地展示在客户端内。
京东金融 App 所用的这个组件是一个通用的、开源的第三方组件,名字有点长,叫「Android-Universal-Image-Loader」,在 Github 上可以找到。
虽然不能确定京东有没有对其进行魔改、加入一些可能的恶意代码等,但是至少这个第三方通用库本体是不会有问题的。
这个组件本身也就只是起一个图片缓存的作用,在笔者看来,这大概率是京东的 Android 程序员直接用了这个库,然后没有更改这个库的任何东西,之后图片缓存直接出现在了其默认应该出现在的地方,被这个网友意外地发现,认为有问题,然后被贴上标签的新闻在网络上疯狂扩散。
很多人认为光是拷贝就是一个很严重的问题,但是你仔细想想,在你截了某个图片的时候,微信会问你你是否想要发送这张图,而那个界面上也是有着类似的小图缓存。
那么这是否意味着微信窃取了你的隐私呢?
你可能还会问,这种本地缓存的意义在哪里,为什么不能直接用原图呢?如果直接使用原图,由于很多原图的大小动辄都至少是兆字节级别的,有的照片大一点可能有十几 MB,在这种情况下,App 要是多将几张这样的图片加载到内存里,等待客户端可能的展示,那么它对内存的占用将会变得非常巨大。
新产生的图片是你有可能最会在 App 中被展示的,因而这一部分图片会被制成缩略图缓存。
国内网友们对隐私问题如此敏感从保护个人隐私的角度来说是一件好事,但是我们也不能太过批判地、戴有色眼镜地看待这样的问题,有的时候厂商真的没有作恶。
这一次的事件反映出了两个问题。
第一个是 Android 系统对权限管理仍然不够严格的弊病,不少国内的定制 Android 在部分权限上会直接给一些 App 开绿灯,但是实际上大部分时候 App 并没有必要拿到这些权限。
笔者的建议是,严格把控好各个应用的权限,不该给的不要给,如果它一定需要某个权限,而这个权限没有开放,它会主动问你要的,直接开绿灯会给 App 作恶的机会。
第二个是国内的不少 App 在后台的行为不够友好和老实,京东金融作为一个金融 App,而非微信那样的社交 App,在进入后台后本不应该那么活跃,甚至活跃到去捕捉系统新产生的图片。
国内不少 Android 开发者在开发应用的过程中不能很好地约束应用在后台的行为,最终给用户带来了耗电、卡顿之类的干扰。
在如今这个开发者不能主动管控好应用行为的环境下,作为用户的我们应该更加注意手机上应用的行为,如果一个应用获取的权限是它本身就不怎么用得上的,如拨打电话、读取短信等等关键权限,能不给就不给。
除此之外用一些其他的工具来约束应用在后台的行为也是一个比较好的做法,比如绿色守护、冰箱等等。
Android 好就好在高自由度上,恰巧不好也是不好在高自由度上。