1、移动应用开发安全规范1、数据保存规范1.1、所有敏感信息不要保存到外部存储中1.2、S1级别的敏感信息不能在客户端保存1.3、S2级敏感数据必须加密保存(1)、采取权威的主流加密算法(如DES、AES、RSA等)(2)、选取秘钥的长度必须足够长,以便满足安全性要求。(3)、加密算法的实现方法,必须采用操作系统官方提供的接口,或是各语言标准算法库提供的函数。(4)、严禁自己设计、实现机密算法注:敏感数据定义详见10. 敏感数据定义安全规范一节2、网络传输规范客户端与服务端之间通信的网络是不可信的,包括运营商网络和wifi无线网络。2.1、认证授权相关网络传输安全规范登录、注册、密码找回等属于认证
2、授权环节的网络传输需要使用https协议传输。2.3、敏感数据传输需要使用https协议敏感数据定义详见10. 敏感数据定义安全规范一节2.3、服务端的证书必须由权威的CA机关提供服务端不能采用自签名的方式提供证书,客户端需要实现验证服务端证书合法性的功能。2.4、采用其他加密算法进行传输加密的规范不建议使用对于无法采用https协议进行加密通信的场景,需要使用其他加密通信方案的必须按照以下规范实施:(1)、采取权威的主流加密算法(如DES、AES、RSA等)(2)、选取秘钥的长度必须足够长,以便满足安全性要求。(3)、加密算法的实现方法,必须采用操作系统官方提供的实现,或是各语言标准算法库提
3、供的实现。(4)、客户端、服务端之间需要有验证双发合法性身份的机制(5)、严禁自己设计、实现机密算法2.5、自动升级的安全规范(1)、为了能够及时修复已发布产品的安全漏洞,必须具备在线升级的功能。(2)、在线升级功能的实现上必须对更新程序进行完整性检查,避免在升级程序在网络传输中被替换掉。3、页面展示规范3.1、S0级敏感信息不能在页面中直接显示3.2、S1级敏感信息不能在页面中完全显示可以采用*隐藏部分内容后再页面上显示。3.3、S2级敏感信息规范(1)、单个信息展示,可以全部内容展示。(2)、同时展示5个以上该类信息的页面,需要对该类信息的内容做不完全展示(使用*隐藏部分内容)如:用户列表
4、的展示页面4、日志安全规范4.1、敏感数据不能保存在日志中所有S1、S2、S3级别的敏感数据均不能在日志中出现,确实需要出现的,需要保存时隐去部分信息。4.2、正式发布版本不能包含debug级以下日志4.3、关键操作日志记录规范(1)、登录、修改密码、付款等关键操作,需要在日志中进行记录。(2)、关键操作日志的记录位置应该是服务器端。5、身份认证、授权和会话管理规范5.1、身份认证机制安全规范(1)、需要设计有效的身份验证机制。(2)、如果采取账号密码的认证机制,密码需要6位以上,字母数字混合(3)、涉及交易,资金等核心业务,需要有二次认证机制。5.2、身份认证应该绑定终端用户的身份绑定的对象
5、是用户的身份,而非用户的设备5.3、会话管理安全规范登录完成后的会话管理阶段的所有请求都需要对用户的合法身份进行鉴别(如token方式),鉴别通过后才能进行光管的操作。5.4、使用第三方认证安全规范(1)、使用OAuth2.0 协议作为第三方登录认证的协议。(2)、严格按照第三方开放平台接入规范执行。(3)、认证逻辑尽量放在服务器端完成,不要放在客户端。6、服务端安全规范需要按照web服务安全规范执行,重点关注以下几点:6.1、有效防范常规的XSS、SQL注入、CSRF等web安全漏洞。6.2、对水平权限、垂直权限等与业务场景关系紧密的安全漏洞有防范措施6.3、有防范DDOS、CC攻击的安全方
6、案。保障后端 API 服务和平台的安全 7、针对使用第三方或开源的代码库、框架的安全规范7.1、在同类产品中排名前三位的代码库或框架。7.2、有团队在持续维护,最近两年内至少发不过一个新版本或更新过bug。7.3、国外有Google、亚马逊、微软等或国内有百度、阿里、腾讯等厂商使用的代码库或框架优先考虑。8、应用模块、接口安全规范8.1、应用内模块组件间的验证应用内各组件、模块间调用要进行验证。确保调用方和被调用方多有应用内的合法安全模块。没有被替换的风险。8.2、对被调用的外部模块的验证应用对调用的外部模块或组件,需要有完整的验证机制,确保被调用者的合法性。8.3、对外部调用者合法性验证应用
7、对外提供服务、数据访问接口的功能,需要对调用者的合法性进行验证。注:对于android系统重点关注Activity、BroadcastReceive、Service、Content Provider各组件之间访问的安全性9、发布安全规范9.1、测试版本严禁发布(1)、输出测试log的版本(2)、使用测试签名的版本9.2、使用公司官方证书签名后的版本才能正式发布9.3、签名证书需要集中管理有有专人负责10、敏感数据定义安全规范级别内容定义要求显示规范备注S1密码6位以上,数字、字母组合禁止显示登录密码S2身份证号码、护照号码等前三位,后三位电话号码前三位,后四位用户id11位以上,不连续数字至少隐去中间4位邮箱至少隐去中间4位用户手机上的隐私信息(通信录、短信等)只可用作信息收集S3用户名用户地址用户账户金额交易记录GPS信息