1、保障开放平台能力接入安全
(1)为了避免攻击者伪造应用接入开放平台,造成运营商及能力提供商的资源滥用,以及对开发者的非法计费,需要在能力调用过程中对应用的身份进行认证。建议采用Token机制实现应用身份认证:在每次能力调用时,安全模块需要对能力调用过程中的URL与APPKEY进行检查,以防止APPKEY被滥用、重用。终端应用、Web应用均采用开发阶段预置在应用中的APPKEY生成TerToken和WebToken,开放平台通过同样的机制对接收的TerToken和WebToken进行验证、判断应用身份的合法性,每次请求的Token都不同。
(2)为了避免合法应用滥用未授权或未购买的能力,需要对应用调用能力的权限进行验证。
(3)为了实现对用户的计费及开发者的计费,需要对用户账户及开发者子账户进行验证。
(4)为了避免用户遭受未授权应用的骚扰,实现用户隐私保护,需要对用户与应用的订购关系进行验证。
(5)为了防止应用在运行中被攻击者恶意篡改,当用户执行非法操作或破坏计费时,需要对应用的完整性进行保护。应用可以在本地采用MAC指纹方式实现对运行程序完整性的验证,禁止经过篡改的应用执行任何操作。
MAC指纹生成:在终端应用通过测试审核之后,安全模块中的完整性管理工具可自动计算出终端应用模块,以及终端能力SDK的MAC指纹。
MAC指纹安全存储:完整性管理工具自动将MAC指纹安全存储(如加密存储、离散存储、代码混淆、安全算法转换)到新建的终端应用安全组件中,并对新建的安全组件进行安全加固(加固需求见下文中说明),MAC指纹在任何情况下均不允许被非法窜改。
安全组件置换:完整性管理工具可自动将开发者在开发阶段所使用安全组件替换成安全存储了MAC指纹并进行了安全加固了的新建的终端应用安全组件,并将应用重新打包并输出。
2、保障平台与外部平台之间协议与接口安全
(1)制定并实施平台与外部平台接口之间的安全管控措施。
(2)技术实现需要符合协议操作规范(公有和私有协议,应注释协议实现功能及各接口传递参数的含义),核实是否对协议与接口进行过安全测试。
(3)对相关代码进行安全审计。
(4)现场测试时至少采用以下方式验证上述各点,是否还存在其他安全问题。
·代码安全审计;
·接口是否可对输入来源进行白/黑名单判断。
接口需要对设计范围以外的非正常参数进行过滤,并提供统一的、不泄露内部敏感信息的提示。
3、保障能力接囗调用安全
(1)定期梳理业务流程,筛查存在接口调用的业务操作,如发送短息、彩信等。
(2)梳理平台全部能力调用接口,确保没有接口能够成功实施违规调用操作。
·对于GET型提交的接口调用,可直接在浏览器输入中对相关参数进行修改和测试;
·对于POST型提交的接口调用,可在页面上直接输入或借助特定工具抓包对相关参数进行修改和测试。
(3)梳理对能力开放接口进行调用的业务操作,确保针对这些业务操作具备一定安全防护措施,如动态短信确认、权限限制(即需登录后调用接口)等。
4、接口对提交数据进行合法性校验和有效性验证
(1)梳理业务流程,筛查存在接口调用的业务操作,如二维码自制提交、头像提交等。
(2)测试非法内容的提交处理。
·进入提交页面,将提交的内容修改为非法或无效的,例如,在提交涉黄、涉政治等非法内容时可将提交内容修改为无效内容等;
·将修改后的内容进行提交;
·接口应能够对非法的内容进行过滤或提示,也可以对无效内容进行自动更新或提示。
(3)接口对非法或无效内容应具有一定的防护和过滤机制;同时,应当核实是否可以通过一定的技术手段绕过接口防护和过滤机制,如编码等,即核实安全防护机制的安全性。
5、本地API的安全保护
客户端应用需要保护本地API在调用过程中的完整性,以及一些安全相关API的机密性。本地API的安全保护可通过加密处理、输入/输出口转移、安全算法转换、敏感信息转换等机制,以保障不同组件之间的调用安全。
6、安全能力更新机制及其他安全加固需要
当平台监测到客户端应用安全模块被攻击后,可及时通过安全能力更新机制更新客户端应用中的安全组件相关算法或密钥,或通过平台安全策略禁止被攻击后的客户端访问开放平台能力,以确保业务平台能力仅被合法使用;同时还需要解决可能出现的针对其他攻击方法的安全加固需求。