Web安全原则
1.认证模块必须采用防暴力破解机制,例如:验证码或者多次连续尝试登录失败后锁定帐号或IP。
说明:如采用多次连续尝试登录失败后锁定帐号或IP的方式,需支持连续登录失败锁定策略的“允许连续失败的次数”可配置,支持在锁定时间超时后自动解锁。
2.对于每一个需要授权访问的页面或servlet的请求都必须核实用户的会话标识是否合法、用户是否被授权执行这个操作,以防止URL越权。
说明:防止用户通过直接输入URL,进行URL越权,请求并执行一些页面或servlet;建议通过过滤器实现。
3.登录过程中,往服务器端传递用户名和口令时,必须采用HTTPS安全协议(也就是带服务器端证书的SSL)。只提供本机接入、登录,做设备管理使用的场景暂时不要求。
说明:如果在客户端和服务器间传递如帐号、口令等敏感数据,必须使用带服务器端证书的SSL。由于SSL对服务端的CPU资源消耗很大,实施时必须考虑服务器的承受能力。
4.对用户的最终认证处理过程必须放到服务器进行。
用户产生的数据必须在服务端进行校验;数据在输出到客户端前必须先进行HTML编码,以防止执行恶意代码、跨站脚本攻击。对于不可信的数据,输出到客户端前必须先进行 HTML 编码。
5.使用主流Web安全扫描工具扫描Web服务器和Web应用,不存在“高”级别的漏洞。
非嵌入式产品的Web应用,应使用预编译语句PreparedStatement代替直接的语句执行Statement,以防止SQL注入。
敏感数据保护
1.系统对敏感数据的存储、传输和处理需保证数据安全,并遵从适用国家和地区的法律和法规要求。
敏感数据定义:包括但不限于口令、银行账号、个人数据(单独使用该数据或者结合其他信息可以识别某个活着的自然人的数据,包括:最终用户姓名、帐号、主叫和被叫号码、通信记录、话单、通信时间、定位数据等)。
注:对于业界第三方主流软硬件(如操作系统、数据库、Web容器)自身提供的口令功能,不受本条限制。
2.在非信任网络之间进行敏感数据(包括口令,银行帐号,批量个人数据等)的传输须采用安全传输通道或者加密后传输,有标准协议规定除外。
3.禁止使用私有加密算法。
说明:
- 对称加密算法建议使用:AES192及以上强度;
- 密钥交换算法建议使用:DH1024;
- 数字签名算法建议使用:DSA1024、ECDSA192;
- 非对称算法建议使用:RSA2048、ECC192;
- HASH(哈希)算法建议使用:SHA256及以上强度;
- HMAC(基于哈希的消息验证码)算法建议使用:HMAC-SHA256;用于敏感数据传输加密的密钥,不能硬编码在代码中。
4.在敏感数据的安全传输上,优先使用业界的标准安全协议(如SSH v2/TLS1.0/SSL3.0/IPSec/SFTP/HTTPS等),并确保密钥可配置;如果是由产品自身实现安全传输过程,则优先使用Diffie-Hellman密钥交换算法,如果使用预置共享密钥等其他方法,也必须保证该密钥可配置和可替换。禁止在日志、话单等文件中记录口令、银行账号、通信内容等敏感数据;尽量避免在日志、话单中记录个人数据,如果必须记录个人数据,则所有数据必须进行结构化存储或适合于进行匿名化提取;
1)尽量避免在日志中记录个人数据,如果必须记录,在个人数据之前或之后加统一的标记,以区别于其他非个人数据。
2)尽量避免在话单中记录个人数据,如果必须记录,则话单必须进行结构化存储,字段间必须由统一的分隔符分开,每行的字段按列严格对应。
有个人数据导出功能的产品发布时必须同时提供对个人数据进行过滤或匿名化处理和功能或工具;
严格限制导出功能的权限,对导出功能的使用必须有日志记录。
涉及个人数据的采集/处理的功能须提供安全保护机制(如认证、权限控制、日志记录等),并通过产品资料向客户公开。
在正常业务流程和标准协议之外,禁止出于故障定位目的进行用户精确位置信息定位。如需处理用户精确位置数据,应有华为的明确需求,并在方案设计时,给予用户随时撤回同意的机会。
口令安全策略管理
设置口令时,默认检测口令复杂度,口令至少满足如下要求:
口令长度至少6个字符(特权用户至少8个字符);
口令必须包含如下至少两种字符的组合:
-至少一个小写字母;
-至少一个大写字母;
-至少一个数字;
-至少一个特殊字符:`~!@#$%^&*()-_=+|[{}];:’”,<.>/? 和空格
- 口令不能和帐号或者帐号的逆序相同;
若设置的口令不符合上述规则,必须进行警告。
系统必须提供锁定用户的机制。可选择如下两种方式之一:
方式一:当重复输入错误口令次数(默认3次,次数系统可以设置)超过系统限制时,系统要锁定该用户。
方式二:系统还可以设置下次允许输入口令的间隔时间加倍,采用这种方式时,用户可以不设置自动锁定。
可设置自动解锁时间(只适用于由于口令尝试被锁定的用户)
1)对于口令尝试N次失败被锁定的用户,系统要能够设置自动解锁时间,建议默认解锁时间为5分钟。
2)用户被锁时间达到预定义时间,可自动解锁该用户,或者也可通过安全管理员手工解锁该用户。
3)在锁定时间内,仅能允许应用安全管理员角色所属帐号手动解锁该用户。
操作界面中的口令不能明文显示,键入口令时不能明文显示出来(操作界面中的输入口令可不显示或用*代替),包括在终端上打印或存储在日志中时也不能明文显示口令,即使是内存中的明文口令(如登录期间),也应在使用后立即覆盖。
口令输入框不支持拷贝功能。
对于系统内置帐号的缺省口令,口令应符合复杂度的要求,并在客户资料中提醒用户修改。
用户可修改自己的口令,需满足如下要求:
- 用户修改自己口令时必须验证旧口令;
- 不允许修改除自身帐号以外的帐号的口令(管理员除外)
口令不能在网络中明文传输,口令等认证凭证在传输过程中必须加密,使用高安全等级的加密算法
口令在本地存储时必须加密,需满足如下要求:
- 口令不能够明文写入日志文件、配置文件以及cookie中;
- 口令文件必须设置访问控制,普通用户不能读取或拷贝加密的内容。
产品配套资料提供清晰的帐号、口令清单