接入 SDK 结果翻车了?了解 SDK 的那些事

滞波柯里化
• 阅读 3472

前段时间,二狗子的朋友圈被工信部发布的《关于下架侵害用户权益 App 名单的通报》给刷屏了。公告中指出有 90 款 App 未按照要求完成整改将会下架。而这 90 款 App 涉及全国各地教育、游戏、安全、新闻等诸多领域。同时通报中提到,有 5 家企业在 App 不同版本中反复出现同类问题,包括违规收集个人信息、强制用户使用定向推送功能、频繁过度强制索权、欺骗诱导用户下载等。工信部表示将依法暂停其违规行为,予以直接下架处理。

看到这则公告后,本着吃瓜心理,二狗子顺手去搜了一下这 5 家企业,发现他们已经纷纷发表了回应,表示平台排查后发现问题主要在于第三方 SDK 等方面。

其实这类第三方 SDK 插件违法调用手机信息的行为,早在 2020 年的 315 晚会上就被央视曝光过了,目前网络上也经常会出现这类新闻。

接入 SDK 结果翻车了?了解 SDK 的那些事

那为何 SDK 这么危险,软件厂商确还要频频使用呢?但是如果要说 SDK,那肯定离不开 API。

API 的出现

如果想较为详细的了解 API 大家可以阅读《白话科普,10s 了解 API》,这里就给大家简单介绍一下。

API 的全称是 Application Programming Interface,中文名为“应用程序接口”,一般是指一些服务厂商预先定义好的一组向外开放的方法。这些方法直接对应服务厂商的自家服务功能,方便应用程序或开发人员快速调用功能,而无需理解服务厂商工作机制的细节。例如用户如果使用了又拍云短信服务来开发短信发送的功能,那只要按照文档选择想要实现的功能,然后调用短信 API 接口来调用想用服务即可,并不需要知道短信如何传递给客户的技术细节。

接入 SDK 结果翻车了?了解 SDK 的那些事

SDK 的诞生

简单了解了 API,我们再回到本文最初所说的 SDK 上来。

所谓 SDK 其实是"软件开发工具包",即 Software Development Kit 的缩写。它一般是指通过第三方服务商实现产品功能的软件工具包。通常,SDK 是由专业的公司提供的,为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具集合。可以将移动支付技术、语音识别技术,或者存储技术等进行专业集合。它有效减少了开发者在新增功能时对产品每一项功能进行开发的时间。

和 API 一样,SDK 由服务厂商提供了,开发者只需要接入相关 SDK,然后做好相关功能接口的联调即可,至于底层逻辑、数据存储等等都不需要去考虑。

接入 SDK 结果翻车了?了解 SDK 的那些事

API 与 SDK 的区别

那么从结果上看都是让开发者使用三方服务功能的 API 和 SDK 到底有什么区别?为什么说 SDK 就离不开 API?

其实在更多场合下,API 更像是 SDK 的一个子集,这是因为:

  • API 通常是一个接口方法,有特定的功能;而 SDK 是一个很多功能的集合体,更像是一个工具包;
  • API 通常为单个数据接口的形象,SDK 则相当于一个工具环境,通常除了包含了服务的所有 API 功能;
  • SDK 相较于 API 封装层次更高。

为什么 SDK 经常翻车

目前因为各家服务商的提供功能越来越多,同时用户对于 App 的功能需求也逐渐增大,如果每一个功能都是自己开发,那时间和成本都无限延长。因此公司会更偏向选择第三方 SDK 工具包来实现这些功能。这就导致可能很多公司都在用同一个 SDK,一旦这个 SDK 出现了隐私泄露,那牵扯到的也不再仅是一家公司的 App。

那么,如何避开这样的隐私侵害呢?

对于开发商而言,要尽可能选择有一定市场基础的第三方 SDK,比如尽量使用苹果和谷歌商店里选用的 SDK 进行集成。

从个人层面来讲,在下载 App 时,最好选择恶意密度较低的应用商店,比如苹果的 App Store、安卓手机的官方应用商店,不要随意在网站上下载来历不明、未经审核的软件。同时面对安装 App 时弹出的各种权限申请,在给出自己的位置信息、手机通讯录等隐私权限之前一定要认真确认。

最后,国家也一直在政策层面上对此进行监管。要求网络运营者对接入其平台的第三方应用,应明确数据安全要求和责任,督促监督第三方应用运营者加强数据安全管理。

目前国内手机厂商也越来越重视用户隐私,推出“照明弹”等隐私保护功能。一旦这些 App 后台行为的调用逐渐清晰和明朗化,系统也愿意给出更多限制性手段后,守住自己的私密数据,大概就不会成为一个难题了。

推荐阅读

MySQL 中存储时间的最佳实践

Ansible 快速入门

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这