技术开源|如何切断利用“存储/相册权限”超范围收集用户位置信息的风险?

一、前言

用手机拍摄照片已经成为了手机的一个最常用功能,同时也催生了许多对照片进行美化、分享等功能的需求。App在帮助用户处理照片的时候,确需使用“存储/相册权限”读取照片,但照片文件中的EXIF数据经常包含用户照片的地理位置信息,App读取照片的JPGE格式文件(或RAW、HEIF等格式)的同时,也相当于同时拿到张照片拍摄的地理位置信息,这样就可能用户地理位置信息被超范围收集。本文就从App开发者视角,通过技术层面来分析该问题并给出防范风险的具体方法,并提供开源代码,以供参考。

技术开源|如何切断利用“存储/相册权限”超范围收集用户位置信息的风险?

 

二、相册权限与地理位置信息的关系

用户在使用手机拍照功能的时候,除了画面信息得到保存以外,同时还保存了拍摄时间、拍摄设备信息、分辨率、光圈、感光值、白平衡、闪光灯、快门速度等30多种信息,这些信息统称为EXIF信息,拍摄时候的地理位置(GPS定位的经纬度信息,简称GPS信息)也被同时保存在里面,所有拍照生成的JPGE文件,同时包含画面和EXIF信息。因此,App在获得相册权限以后,读取照片时,也同时获取了EXIF信息中的GPS信息。

技术开源|如何切断利用“存储/相册权限”超范围收集用户位置信息的风险?

目前,部分手机厂商在拍照App的设置中,已经给出了“保存地理位置信息”的开关选项,用户可以根据自己的情况来进行控制。如果关闭“保存地理位置信息”开关后,拍照App将不会把GPS信息写入EXIF信息中,起到了保护隐私的作用,但是也无法使用基于照片地理位置实现的“地图相册”等功能了。此外,是不是广大用户普遍已经意识到该机制可能会导致隐私被泄露,恐怕还是个未知数。

三、风险处置及合规建议

由于App在获取用户照片之前,无法得知照片GPS信息是否存在于EXIF中,因此,较为妥当的方式是,在获取相册权限前,不但告知用户申请相册权限的目的、方式和范围,也需要同步告知用户是否使用照片中GPS信息,如果使用则告知使用GPS信息的目的、方式和范围,用户同意以后,再获取照片中的GPS信息。假如用户选择拒绝GPS信息相关的目的,那就需要采用技术手段,在读取照片的时候,删除EXIF中的GPS信息后,再进行照片处理。也就是将照片GPS信息使用的选择权直接交还给用户。

技术开源|如何切断利用“存储/相册权限”超范围收集用户位置信息的风险?

如果App所有的业务功能均不需要照片中的GPS信息,建议在读取照片的时候,直接使用技术方式删除EXIF中的GPS信息后,再对照片进行处理。

四、技术实现方式

删除EXIF中信息的方式有很多,可以在手机端实现也可以在后台实现,这里举一个最简单的方式进行说明,以Android手机端为例,可通过以下核心代码实现:

ExifInterface exif = new ExifInterface(filePath);
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, “0/0,0/0000,00000000/00000”);
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, “0/0,0/0000,00000000/00000”);
exif.saveAttributes();

上述代码的逻辑还能应用到删除EXIF的其他信息(如需),这样就能在手机端完成处理而避免多余个人信息的上传而造成过度收集。

基于上述代码,我们完成了一个删除照片EXIF中GPS信息的SDK插件,已发布到了gitee开源平台上,以供大家研究和交流。

免责声明:发布的程序源代码不承诺代码运行效率及实现安全性,任何组织和个人因使用相关程序源代码造成信息传递或传送失误、代码瑕疵或错误、开发的产品或系统性能及安全性可靠性缺失等任何问题或任何损失的,程序源代码提供单位不承担任何直接或间接责任。

五、总结

本文所探讨的技术实现机制,可以看做是Privacy by design/by default 思路的实践,是充分站在个人权益保护的视角来进行产品研发。建议开发者在进行需求分析、代码实现等环节就充分考虑个人信息保护的要求,以最为简洁、直接的方式切断个人信息过度收集、滥用等的风险,将取得事半功倍的效果。

 

项目技术开源地址:点击此处(Gitee)

 

( 本文作者:北京汉华飞天信安科技有限公司   彭根 )

相关新闻

联系我们

联系我们

服务热线:400-098-2528
技术服务:service@bjhhxa.com.cn
商务合作:sale@bjhhxa.com.cn
北京公司:北京市朝阳区高碑店乡弘胜大厦4层416室
成都公司:成都市双流区华府大道四段999号电子科技大学成都研究院
福建办事处:福建省泉州市丰泽区东海街道滨海社区滨海街109号连捷国际中心7楼701
关注微信
关注微信
返回顶部