代码安全和数据保护,绿标3.0安全标准解读(下)

2022-03-31 15:00:57 浏览数 (1)

权限使用、代码防护和数据安全是应用安全的三个主要维度。在上篇文章中,我们已经对应用如何调用权限进行了解读,本文将重点介绍代码安全和数据保护

如何做好代码安全防护

1、开发环境安全

做好代码安全防护首先要保证开发环境的安全性,尽量使用官方渠道下载的开发工具进行开发。知名的苹果“Xcode后门”事件就是由于部分开发者使用了第三方Xcode编译器进行开发,导致大量应用感染了XcodeGhost病毒,上亿用户隐私受到威胁。

2、避免硬编码关键数据

开发者应避免硬编码中出现关键数据,如加密密钥和敏感信息等,从而避免被黑客攻击。例如,某互联网金融APP在开发过程中将加密算法的密钥直接硬编码,最终导致了用户敏感信息泄露。

3、日志安全

日志分析是黑客常用的攻击手段之一,因此应用有必要建立统一的日志管理接口,避免在日志中记录敏感信息,应用发布之前,应关闭调试接口和调试日志,从而提升代码安全性。

正确日志开关示例

4、系统API使用安全规范

在应用开发时,常常会调用系统API,为了提高安全性,应使用官方推荐版本的API接口,不使用系统废弃和隐藏的API,并多关注系统API变更,及时调整代码,避免出现应用兼容性和安全性问题。

5、身份校验和权限检查

在应用开发过程中,可能涉及到与不同业务和产品的交互,为了避免交互过程中存在的漏洞,应用应对关键操作进行身份校验和权限检查,提升代码安全性。比如通过签名判断安装包和进程是否合法。

6、第三方代码使用安全规范

在开发过程中,可能会引用一些开源的三方代码,对于引用的三方代码,开发者应采用以下安全措施来保证应用的安全性

  • 代码评估,来源可靠性评估、代码质量评估、潜在安全风险评估。
  • 权限控制,确认引入代码所需使用的权限最小化。
  • 更新维护,关注代码的安全动态和版本更新情况,及时修复安全问题,更新代码。
  • 安全保护,对引入的代码进行混淆,防止攻击者针对性的攻击。

7、代码保护安全规范

除了从逻辑上提升代码的安全性,我们还可以通过代码混淆和加固保护的方式对代码进行安全防护,提高攻击者代码分析难度。

如何保障数据安全

国内外用户数据泄露事件层出不穷,给用户隐私造成了极大的隐患。作为开发者,应从数据安全的角度来提升应用的安全性。

1、数据加密安全规范

保障数据安全首先就需要对高敏感数据进行加密处理,避免明文存储,具体加密过程中,应遵循以下规范

  • 采用高安全等级的加密算法,密钥控制在最小范围,防止被拖库后破解。
  • 数据密文和加密密钥应存放在不同的位置。
  • 密钥存储模块应具备防调试及反编译的能力。
  • 密钥数据应分散存储,为获取密钥密文增大难度。

加密算法建议:

2、数据存储安全规范

在数据存储时,同样需要考虑数据的安全性,绿标3.0建议数据存储应遵循以下规范

  • 应用程序关键数据应该存放在私有目录下,并设置合理的访问权限。
  • 应用程序中的隐私数据应加密存储。用于加密的密钥应妥善保存。
  • 禁止程序运行日志中包含有用户敏感数据、程序调试数据等。
  • 建议应用程序采用沙箱技术,同时建议一切穿透应用沙箱的行为都使用权限来管控。

3、通信安全

数据除了存储和使用,可能还会进行传输,即数据通信。开发者同样需要对数据的通信安全进行保护,数据通信又分为本地通信远程通信

3.1本地通信安全

1) intent数据安全:避免在intent包含用户敏感数据,从intent中获取数据时加入必要的异常处理。

2) intent scheme url 协议安全:在使用过程中加入安全限制,防止UXSS等安全问题。

3) 组件调用方式安全:避免通过隐式方式进行调用组件,防止组件劫持。

4) 本地socket通信安全:避免使用socket方式进行本地通信,如需使用,localhost端口号应随机生成,并对端口连接对象进行身份认证和鉴权。

3.2远程通信安全

1) 使用https代替http进行通信,并对https证书进行严格校验。

2) 避免进行远程端口开发通信,如需使用,需要对端口连接对象进行身份认证和鉴权。

4、业务安全

开发者还应从业务的整个流程,如认证和授权、数据使用、业务逻辑和业务运维阶段对数据安全进行防护。具体规则如下:

4.1认证和授权

1) 认证和授权过程应在服务器端完成,避免客户端绕过问题。

2) 对于涉及敏感信息的服务,每次使用前需进行身份认证。

3) 控制登录凭证token有效期,通信过程中进行token鉴权。

4) 避免在终端设备上使用不安全的方法来存储用户名、口令及其它登录凭证。

5) 用户密码需要使用强不可逆的加密算法加密后传输,并引入salt,提高破解难度。

6) 账户号和终端设备信息进行绑定,防止终端模拟攻击。

7) 涉及敏感操作的业务功能,需要通过多因子身份认证提升安全性(短信验证码、软硬件token、生物特征等)。

4.2数据使用安全规范

1) 数据合法性保护。控制用户输入数据的类型、长度,进行恶意代码过滤等。

2) 数据完整和有效性保护。对于接收到的外部数据、加载的外部文件,进行完整、有效性性检查。

4.3业务逻辑及数据安全

1) 条件判断,确保逻辑过程中前置判断条件的有效性、不可绕过性,防止攻击者进行数据修改绕过安全限制。

2) 逻辑设计,确保业务逻辑设计、分支条件及边界条件处理的正确性和完备性,防止不可控执行流程。

3) 工作分配,确保服务端和客户端分工正确,防止一些应该放在服务端的校验工作设置在了客户端,造成权限校验绕过。

4) 业务数据,关键业务数据防篡改、防伪造、防重放。

5) 短信验证码安全,禁止验证码回传行为,验证码至少6位,同时严格限定验证码时效。

4.4业务运维安全

1) 业务风险监控、预警、异常处理预案。

2) 安全动态跟踪及预警、安全事件排查、漏洞修复。

·END·

0 人点赞