前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码安全和数据保护,绿标3.0安全标准解读(下)

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

作者头像
软件绿色联盟
发布2022-03-31 15:00:57
8670
发布2022-03-31 15:00:57
举报

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

如何做好代码安全防护

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·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件绿色联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档