目前市面上第三方SDK越来越多,SDK是第三方开发者提供的软件工具包,在现实工作环境中,SDK更多的是二次开发工具包,这类SDK其实就是把要单独接入的应用的功能从应用中剥离出来,提供给其他开发者。第三方SDK不仅降低了工作的复杂度,而且在一定程度上节约成本。
可凡事有利亦有弊,在今年的315晚会就提到了手机SDK会引起信息泄漏,那么SDK为什么会有这样的安全问题呢?基于此我们请到听云RUM产品负责人为我们详细解答。
Q:目前市面上第三方 SDK 越来越多,那么在引入第三方 SDK 的时候有哪些需要注意的地方呢?
A:现在市面上大多数第三方SDK都是免费提供给开发者使用的,那么在开发者享受第三方 SDK 带来便利的同时也需要考虑到一些安全风险。这些主要体现在三个方面,首先就是兼容性问题,第三方 SDK 与自身业务代码逻辑是否兼容,引入新的第三方 SDK 与现有使用的 SDK 是否兼容;其次就是安全风险,引入的第三方SDK是否存在违规收集用户信息和偷跑流量刷数据的情况;最后就是重复功能太多,比如很多第三方 SDK 都存在收集用户行为和崩溃信息的情况。
Q:如果不注意这些问题的话会带来什么样的后果呢?
A:严重的兼容性问题导致的「崩溃」和「卡顿」会直接影响用户体验,较真的用户就会在应用商店刷一星并且留下一些负面言论。对于企业来说,个别第三方 SDK 可能会过度收集客户的敏感信息导致用户信息泄露和在后台偷跑流量损坏用户权益行为,存在被工信部通报的风险,从而损害企业形象。同时使用多家 SDK 收集崩溃会导致崩溃数据分散和系统卡顿的情况,并且会不利于研发人员汇总排查问题。
Q:我们该如何发现并规避这些问题呢?
A:针对 SDK 兼容性问题,线下可以通过「用例测试」和「灰度测试」的方式来发现并且要求供应商整改;上线以后可以使用一些 Bug 收集工具(如:Bugly、听云App)来持续监控第三方 SDK 的崩溃和卡顿数据。例如某化妆品电商使用了一款「试妆 SDK」,上线运行一段时间后,通过听云后台发现卡顿率有明显上升,发现卡顿根因都指向了「试妆 SDK」,最后联系第三方研发针对该问题做了修复。
其次就是如何发现及规避违规收集用户信息和权限问题,在引入一家新的 SDK 之前,需要了解该 SDK 获取的系统权限,查看是否存在过度索取权限的行为,如:提前申请开启通讯录、定位、短信、录音、相机等权限,或超出其业务功能或服务外,申请通讯录、定位、短信、录音、相机等权限。使用抓包工具,可以查看第三方 SDK 上传的数据,用以排查是否违规收集用户信息。
对于偷跑流量的问题,线下可以使用常用的抓包工具进行查看,但如果 SDK 在半夜闲时偷跑流量,这种情况就很难发现了。线上如果使用了听云 App ,可以通过添加「自身服务」用以区分自身域名和第三方域名,这样可以直观的了解到这些第三方域名的实际吞吐量、请求耗时、请求错误及流量消耗情况。例如某电商用户使用了一款「社会化分享」的 SDK,在上线一段时间后发现有一个「第三方域名」请求量级很大,一个月有80万的访问量,通过域名查看其备案信息后发现该名称与现在使用的任何 SDK 和第三方供应商都无法对应。排查后发现是由于「社会化分享」的 SDK违规发起的请求。该请求会偷偷收集用户信息并且进行标记分类,通过卖数据的方式将安装过该电商App的用户数据推送给其他同类电商应用,已达到获利目的。
Q:我们在程序开发过程中需要怎样对第三方SDK进行管理?
A:首先要加强对第三方SDK的筛选,数据采集尽量使用一家 SDK, 避免多家 SDK 采集同一数据的情况发生,不要引入非必要的 SDK。 其次尽量选择知名的头部第三方SDK,能够提供安全审核报告及数据采集字段说明。最后要做好风险把控,增加第三方 SDK 的控制开关,尽量保证能随时关闭第三方SDK。
Q:听云 App 作为性能监控平台,是如何规避安全风险的?
A:听云 App 作为一家第三方性能监控的 SDK,已经上线六年的时间了。内部对于 SDK 的安全及质量问题都非常重视,在每次发版前都需要进行详细的测试,我们有安全机构提供的「安全审核报告」,能够给客户提供详细的「数据采集字段说明」及「申请权限清单」,保证不会采集除性能数据外的「用户隐私数据」。
对于第三方 SDK 来说,面临的最大挑战就是复杂多变的代码环境,所以兼容性测试就显得尤为重要。对于发现更多的冲突问题和在客户应用上线前发现并解决问题,听云 App 用了五种方式来防范兼容性问题。
1、兼容性测试
我们会针对应用商店排名一百的 App 通过技术手段自动注入 SDK ,通过对比嵌入 SDK 和不嵌入 SDK 的使用步骤,来验证 SDK 与应用及其他第三方SDK是否存在冲突导致的崩溃、卡顿及界面UI加载不正常的问题。
2、发版前测试
客户引入新的 SDK 都很慎重,我们会给每一个客户免费提供「发版前测试」的服务,客户可以将嵌码后的 App 发给听云的技术支持,我们会有专人针对 App 进行「冒烟测试」以验证听云 App SDK 和 客户App 是否存在兼容性问题并提供测试报告。
3、灰度测试
我们给客户提供了一个500人左右的渠道以便客户进行「灰度测试」,通过灰度测试可以提前发现真实用户使用过程中会出现哪些问题,避免应用上线后影响客户的真实用户使用。
4、控制开关
听云 App 针对 SDK 和每个功能模块都提供了控制开关,如果发现某个模块存在兼容性问题导致客户应用崩溃,可以及时关闭该功能模块,关闭后 SDK 将不再运行和采集对应模块的数据,以达到即时止损的目的。
5、Bug监控平台
我们搭建了一套「线上问题收集平台」该平台会分析所有 SDK 上传崩溃中包含听云 SDK 方法名的异常数据,每天都有测试人员来筛查该问题是否是由于听云SDK与客户App 不兼容引发的问题,一旦发现可以立即通过控制开关进行关闭,及时止损。
我们了解到,SDK提供便利的同时一样存在着风险,稍不留神就会对用户体验造成影响,并且会造成信息泄漏和偷跑流量,所以企业在使用第三方SDK时,一定要做好充分的测试,保障安全,才是第一要紧事。
可凡事有利亦有弊,在今年的315晚会就提到了手机SDK会引起信息泄漏,那么SDK为什么会有这样的安全问题呢?基于此我们请到听云RUM产品负责人为我们详细解答。
Q:目前市面上第三方 SDK 越来越多,那么在引入第三方 SDK 的时候有哪些需要注意的地方呢?
A:现在市面上大多数第三方SDK都是免费提供给开发者使用的,那么在开发者享受第三方 SDK 带来便利的同时也需要考虑到一些安全风险。这些主要体现在三个方面,首先就是兼容性问题,第三方 SDK 与自身业务代码逻辑是否兼容,引入新的第三方 SDK 与现有使用的 SDK 是否兼容;其次就是安全风险,引入的第三方SDK是否存在违规收集用户信息和偷跑流量刷数据的情况;最后就是重复功能太多,比如很多第三方 SDK 都存在收集用户行为和崩溃信息的情况。
Q:如果不注意这些问题的话会带来什么样的后果呢?
A:严重的兼容性问题导致的「崩溃」和「卡顿」会直接影响用户体验,较真的用户就会在应用商店刷一星并且留下一些负面言论。对于企业来说,个别第三方 SDK 可能会过度收集客户的敏感信息导致用户信息泄露和在后台偷跑流量损坏用户权益行为,存在被工信部通报的风险,从而损害企业形象。同时使用多家 SDK 收集崩溃会导致崩溃数据分散和系统卡顿的情况,并且会不利于研发人员汇总排查问题。
Q:我们该如何发现并规避这些问题呢?
A:针对 SDK 兼容性问题,线下可以通过「用例测试」和「灰度测试」的方式来发现并且要求供应商整改;上线以后可以使用一些 Bug 收集工具(如:Bugly、听云App)来持续监控第三方 SDK 的崩溃和卡顿数据。例如某化妆品电商使用了一款「试妆 SDK」,上线运行一段时间后,通过听云后台发现卡顿率有明显上升,发现卡顿根因都指向了「试妆 SDK」,最后联系第三方研发针对该问题做了修复。
其次就是如何发现及规避违规收集用户信息和权限问题,在引入一家新的 SDK 之前,需要了解该 SDK 获取的系统权限,查看是否存在过度索取权限的行为,如:提前申请开启通讯录、定位、短信、录音、相机等权限,或超出其业务功能或服务外,申请通讯录、定位、短信、录音、相机等权限。使用抓包工具,可以查看第三方 SDK 上传的数据,用以排查是否违规收集用户信息。
对于偷跑流量的问题,线下可以使用常用的抓包工具进行查看,但如果 SDK 在半夜闲时偷跑流量,这种情况就很难发现了。线上如果使用了听云 App ,可以通过添加「自身服务」用以区分自身域名和第三方域名,这样可以直观的了解到这些第三方域名的实际吞吐量、请求耗时、请求错误及流量消耗情况。例如某电商用户使用了一款「社会化分享」的 SDK,在上线一段时间后发现有一个「第三方域名」请求量级很大,一个月有80万的访问量,通过域名查看其备案信息后发现该名称与现在使用的任何 SDK 和第三方供应商都无法对应。排查后发现是由于「社会化分享」的 SDK违规发起的请求。该请求会偷偷收集用户信息并且进行标记分类,通过卖数据的方式将安装过该电商App的用户数据推送给其他同类电商应用,已达到获利目的。
Q:我们在程序开发过程中需要怎样对第三方SDK进行管理?
A:首先要加强对第三方SDK的筛选,数据采集尽量使用一家 SDK, 避免多家 SDK 采集同一数据的情况发生,不要引入非必要的 SDK。 其次尽量选择知名的头部第三方SDK,能够提供安全审核报告及数据采集字段说明。最后要做好风险把控,增加第三方 SDK 的控制开关,尽量保证能随时关闭第三方SDK。
Q:听云 App 作为性能监控平台,是如何规避安全风险的?
A:听云 App 作为一家第三方性能监控的 SDK,已经上线六年的时间了。内部对于 SDK 的安全及质量问题都非常重视,在每次发版前都需要进行详细的测试,我们有安全机构提供的「安全审核报告」,能够给客户提供详细的「数据采集字段说明」及「申请权限清单」,保证不会采集除性能数据外的「用户隐私数据」。
对于第三方 SDK 来说,面临的最大挑战就是复杂多变的代码环境,所以兼容性测试就显得尤为重要。对于发现更多的冲突问题和在客户应用上线前发现并解决问题,听云 App 用了五种方式来防范兼容性问题。
1、兼容性测试
我们会针对应用商店排名一百的 App 通过技术手段自动注入 SDK ,通过对比嵌入 SDK 和不嵌入 SDK 的使用步骤,来验证 SDK 与应用及其他第三方SDK是否存在冲突导致的崩溃、卡顿及界面UI加载不正常的问题。
2、发版前测试
客户引入新的 SDK 都很慎重,我们会给每一个客户免费提供「发版前测试」的服务,客户可以将嵌码后的 App 发给听云的技术支持,我们会有专人针对 App 进行「冒烟测试」以验证听云 App SDK 和 客户App 是否存在兼容性问题并提供测试报告。
3、灰度测试
我们给客户提供了一个500人左右的渠道以便客户进行「灰度测试」,通过灰度测试可以提前发现真实用户使用过程中会出现哪些问题,避免应用上线后影响客户的真实用户使用。
4、控制开关
听云 App 针对 SDK 和每个功能模块都提供了控制开关,如果发现某个模块存在兼容性问题导致客户应用崩溃,可以及时关闭该功能模块,关闭后 SDK 将不再运行和采集对应模块的数据,以达到即时止损的目的。
5、Bug监控平台
我们搭建了一套「线上问题收集平台」该平台会分析所有 SDK 上传崩溃中包含听云 SDK 方法名的异常数据,每天都有测试人员来筛查该问题是否是由于听云SDK与客户App 不兼容引发的问题,一旦发现可以立即通过控制开关进行关闭,及时止损。
我们了解到,SDK提供便利的同时一样存在着风险,稍不留神就会对用户体验造成影响,并且会造成信息泄漏和偷跑流量,所以企业在使用第三方SDK时,一定要做好充分的测试,保障安全,才是第一要紧事。