应用安全基线

1. 用户认证与授权要求

强密码策略

  • 设定密码长度
  • 密码复杂度
  • 密码有效期
  • 历史密码限定时间不可重复使用
  • 是否存在默认密码
  • 首次登陆修改密码
  • 账户密码重复登录锁定

多因素身份验证

  • (令牌、动态口令、物理设备、生物识别、数字证书、手机验证码)

权限管理 (如基于角色的访问控制)

  • 用户角色类型
  • 角色权限
  • 角色使用(多人使用)
  • 用户凭据的安全存储和管理(最小特权原则,属性访问控制)

2. 会话管理要求

会话标识符:

  • 在建立新会话时,使用随机、唯一且不可预测的会话标识符;
  • 禁止在URL中传递会话ID;

会话超时:

  • 配置合适的会话超时机制,确保会话在一定时间后自动过期;
  • 当用户退出系统或关闭浏览器时,应及时清除与该用户相关的会话信息;

记录和审计:

  • 记录每个会话的开始和结束时间以及其他相关的会话信息;
  • 对异常的会话活动进行记录和警报,及时发现和响应潜在的安全事件和威胁;

会话保护:

  • 防止会话固定攻击(Session Fixation)、会话劫持(Session Hijacking)等攻击;
  • 采用CSRF(跨站点请求伪造)防御措施,避免恶意用户利用会话执行未经授权操作;

安全设置:

  • 禁用自动完成功能,防止敏感数据泄露;
  • 定期更改会话密钥,增加攻击者猜测密钥的难度;
  • 启用HTTPOnly和Secure标志,确保会话Cookie仅在安全环境下传输;

3. 访问控制要求

身份验证和授权:

  • 对用户进行身份验证,确保用户被授予适当的访问权限;
  • 基于角色、属性或其他标识符来授权用户访问系统中的资源;

最小特权原则:

  • 采用最小特权原则,在确保任务完成的前提下,尽量限制用户的访问权限;
  • 监控和审计不同用户在系统中的访问行为;

文件和目录权限管理:

  • 确保文件和目录的访问权限与其敏感程度相匹配;
  • 定期审核文件和目录权限,及时发现和纠正权限错误;

网络端口和协议的访问控制:

  • 只允许必要的网络端口和协议流量通过防火墙;
  • 配置适当的网络访问控制列表(ACL),限制对系统的远程访问;

应急访问控制:

  • 为应急访问准备备用帐户,并按照需要授权;
  • 实施强制访问控制,即只有在绝对必要的情况下才能通过请求获得临时访问权限;

4. 输入及输出安全要求

输入验证:

  • 对用户输入进行验证,在接受输入之前,过滤不安全的字符和代码;
  • 禁止用户通过URL、表单提交和文件上传等方式传递恶意代码;

输出编码和转义:

  • 对输出进行编码和转义,以防止跨站点脚本(XSS)和SQL注入攻击等;
  • 防止敏感数据泄露,对输出中的敏感信息进行加密处理;

文件上传和下载管理:

  • 限制上传文件的类型和大小,并检查文件内容是否合法;
  • 防止恶意用户下载或访问系统中的敏感文件;

日志记录:

  • 记录用户输入和输出流量、日志和报告,以便发现潜在的安全问题;
  • 加密存储日志和报告文件,以防止未经授权的访问;

5. 加密相关要求

数据加密:

加密算法:

  • 选择合适的加密算法,如对称加密、非对称加密、哈希等例如AES、RSA等;

对称加密算法:

  1. DES(Data Encryption Standard):数据加密标准,适用于较早期的加密需求;3DES(Triple Data Encryption Algorithm):三重DES算法,使用多个DES算法进行加密,提高安全性;AES(Advanced Encryption Standard):高级加密标准,目前最为流行的对称加密算法;Blowfish:快速可靠的加密算法,适用于海量数据加密;

非对称加密算法:

  1. RSA(Rivest-Shamir-Adleman):以三位创始人名字命名的非对称加密算法,广泛应用于网络通信等领域;Diffie-Hellman:密钥交换算法,用于生成共享密钥;ECC(Elliptic Curve Cryptography):基于椭圆曲线的加密算法,具有高强度和效率优势。

哈希算法是一种将任意长度的数据映射为固定长度散列值(hash值)的算法。以下是几种常见的哈希算法:

  1. MD5(Message Digest 5):输出128位的摘要值,被广泛应用于文件完整性校验和密码校验等领域。SHA(Secure Hash Algorithm):家族包括SHA-0、SHA-1、SHA-2和SHA-3,其中SHA-1已经不安全。SHA-2包括256位、384位和512位版本,而SHA-3则固定输出为224位、256位、384位和512位。RIPEMD(RACE Integrity Primitives Evaluation Message Digest):RIPEMD-160是一种较安全的哈希函数,输出160位的摘要值,被广泛应用于数字签名等场景。BLAKE(Blake2):BLAKE是一种高效且强大的哈希算法,被广泛用于密码学、区块链和数字货币等领域。
  • 确保算法的安全性和可靠性;

密钥管理:

  • 安全生成、存储和分发密钥;
  • 定期更换密钥,增加攻击者破解密钥的难度;

数据分类:

  • 对不同级别的数据采用不同的加密策略;
  • 对重要的和敏感的数据进行加密以提高其安全性;

访问控制:

  • 限制对加密数据的访问权限,确保仅有授权的用户才能访问;
  • 设定合适的加密策略和密钥管理规则;

安全性评估:

  • 定期测试和评估加密系统的安全性;
  • 及时修复潜在的漏洞和弱点。

传输加密:

安全协议:

  • 采用合适的安全协议,如HTTPS、TLS等;
  • 确保协议的安全性和可靠性;

传输安全协议是保护网络通信安全的重要措施,常见的传输安全协议包括:

  1. SSL(Secure Sockets Layer):由Netscape公司开发的一种用于保障网际通信安全的协议,后被TLS所取代。TLS(Transport Layer Security):基于SSL协议,通过数据加密、身份验证和消息完整性等方式提供保护,广泛应用于Web浏览器、电子邮件、即时通讯等场景。SSH(Secure Shell):用于在网络上的两台计算机之间进行加密通讯的协议,提供了身份验证、数据加密和完整性保护等功能。IPsec(Internet Protocol Security):为IP层提供安全服务,可用于实现VPN、路由器和防火墙等设备的安全协议。

密钥管理:

  • 安全生成、存储和分发密钥;
  • 定期更换密钥,增加攻击者破解密钥的难度;

身份验证:

  • 对用户进行身份验证,在确保用户是授权访问者的前提下,限制访问权限;
  • 防止未经授权的用户访问系统资源;

强制加密:

  • 强制使用加密传输敏感数据;
  • 禁止在非加密连接上传输敏感数据;

双向验证:

  • 启用双向验证,确保服务器和客户端之间建立了安全通信;
  • 确认服务器和客户端之间的安全证书;

密钥管理:

  • 定期更换加密所用的密钥,增加攻击者猜测密钥的难度;
  • 确保密钥的生成、存储和分发的安全性;

配置文件加密:

  • 加密应用程序的配置文件,并限制对配置文件的访问权限;
  • 提供安全的解密方式,以便仅有授权的用户才能访问配置文件;

6. 应用程序错误处理

错误信息处理:

  • 对于应用程序出现的错误,需要进行正确的提示和响应,以避免信息泄漏和攻击;
  • 不应在错误信息中透露敏感信息,如用户名、密码等;

异常处理:

  • 程序代码应该具备能够捕获和处理异常的能力,以确保程序不会因为未知的异常而崩溃;
  • 应该启用相应的日志记录,以便追踪和定位异常;

安全配置:

  • 配置合理的错误页面和默认页面,避免信息泄漏;
  • 禁止显示调试信息,避免攻击者利用这些信息发起攻击;

7. 日志管理和审计要求

日志收集:

  • 收集系统、应用程序和网络设备等的操作日志和安全事件日志;
  • 确定合理的日志格式和内容,包括时间、来源、类型、操作者等信息;

日志存储和保护:

  • 将日志存储在安全位置,并限制访问权限,以防止恶意攻击或内部滥用;
  • 对日志进行加密和完整性保护,确保日志不被篡改或伪造;

日志分析和监测:

  • 对日志进行实时监测和分析,识别异常事件和行为;
  • 采用机器学习等技术手段,提高日志分析和监测的效率和准确性;

审计和调查:

  • 对日志进行审计和调查,确定安全事件的原因和影响;
  • 建立合适的审计规则和流程,确保审计和调查的可靠性和有效性;

合规性要求:

  • 根据相关法律法规和行业标准,确定日志管理和审计的合规性要求;
  • 确保满足相关合规性要求,避免违反相关规定而遭受罚款或法律责任

8. 防恶意代码要求

防病毒和漏洞利用:

  • 安装杀毒软件,并定期更新病毒库;
  • 及时修补操作系统和应用程序中的漏洞,避免被黑客利用;

防钓鱼攻击:

  • 教育用户识别钓鱼网站、电子邮件等,以避免泄露敏感信息;
  • 安装浏览器插件,过滤危险或可疑网站;

应用白名单:

  • 使用应用白名单机制,限制只能运行已经批准的应用程序;
  • 禁止安装未知来源的应用程序,防止木马、恶意软件等恶意代码入侵;

用户教育:

  • 加强用户安全意识,教育用户如何避免恶意代码攻击;
  • 针对系统和应用程序的安全问题开展培训和宣传活动;

操作系统加固:

  • 禁止使用默认密码、关闭不必要的服务;
  • 采用最小化安装或服务器模式,避免安装不必要的组件;

9. 业务逻辑安全要求

业务逻辑部分要求:

  • 检查和验证输入数据是否符合格式要求,如日期、电话号码、身份证号码等;
  • 对输入数据进行长度检查,防止缓冲区溢出等安全问题;
  • 检查输入数据是否符合业务逻辑规则,如商品数量应大于0,价格应该为正数等;
  • 禁止用户输入特殊字符,以避免SQL注入和XSS攻击等安全问题;
  • 对输入数据进行去重处理,避免重复数据的存在;
  • 检查输入数据的来源和有效性,避免篡改或伪造数据;
  • 对敏感数据进行脱敏处理,保护用户隐私;
  • 对输入数据进行范围检查,确保数据在合理范围内;
  • 对输入数据进行关联校验,例如两个输入字段必须满足某种关系才能通过校验;
  • 对输入数据进行逻辑校验,例如某个字段的值必须与另一个字段的值相同才能通过校验;
  • 对数据进行白名单过滤,只允许来自指定IP地址的数据被接受;
  • 对数据进行黑名单过滤,禁止来自指定IP地址的数据被接受;
  • 对文件上传进行限制和校验,避免上传非法或恶意文件;
  • 对网络请求进行安全检查,防止跨站点请求伪造(CSRF)攻击等安全问题;
  • 对敏感业务逻辑进行访问控制和权限管理,确保只有经过授权的用户才能访问;
  • 对数据进行分类和分级处理,不同级别的数据采取不同的安全措施;
  • 对输入数据进行加密,以保护数据在传输和存储过程中的机密性;
  • 对输入数据进行签名,以防止数据被篡改或伪造;
  • 对网络传输的数据进行压缩处理,提高网络传输效率;
  • 对系统进行日志记录和管理,以方便追踪和审计系统操作记录。

10. 文件上传安全要求

文件类型和大小限制:

  • 对上传文件的类型和大小进行限制,防止上传恶意文件或超大文件;
  • 验证文件类型和大小的合法性,并禁止运行可执行文件、压缩包等高风险文件;

文件名检查和处理:

  • 对文件名进行检查和过滤,避免文件名中包含特殊字符、路径符号等危险元素;
  • 对上传的文件进行重命名,以防止黑客利用文件名进行攻击;

输入验证:

  • 对用户输入的数据进行验证和过滤,防止注入攻击、跨站脚本攻击等漏洞;
  • 采用安全编码规范,避免在程序代码中引入潜在的漏洞;

存储安全:

  • 将上传文件存储在安全位置,确保用户无法直接访问上传目录;
  • 对上传的文件进行病毒扫描和文件完整性校验,以保证文件内容的安全性;

安全审计和监测:

  • 定期审查文件上传功能,检测异常活动;
  • 监视系统日志、网络流量和事件,及时发现威胁和攻击行为;

11. 文件下载安全要求

访问控制:

  • 确保下载链接和资源仅由授权用户访问;
  • 对下载链接进行加密或动态生成,以防止非法访问和攻击;

文件类型和大小限制:

  • 对下载文件的类型和大小进行限制,避免下载恶意文件或超大文件;
  • 验证文件类型和大小的合法性,并限制可下载文件的文件名长度;

输入验证:

  • 对用户输入的数据进行验证和过滤,防止注入攻击、跨站脚本攻击等漏洞;
  • 采用安全编码规范,避免在程序代码中引入潜在的漏洞;

存储安全:

  • 将可下载文件存储在安全位置,确保用户无法直接访问下载目录;
  • 对可下载文件进行病毒扫描和文件完整性校验,以保证文件内容的安全性;

12. API接口安全要求

访问控制:

  • 对API接口进行鉴权验证,确保只有授权用户可以访问;
  • 通过IP地址、HTTP头信息等方式限制API调用者访问频率和请求次数;

输入验证:

  • 对API接口输入参数进行验证和过滤,防止注入攻击、跨站脚本攻击等漏洞;
  • 采用安全编码规范,避免在程序代码中引入潜在的漏洞;

加密传输:

  • 对API接口传输的数据进行加密,以保证数据机密性;
  • 使用HTTPS协议,保障通信过程的安全性;

安全审计和监测:

  • 定期审查API接口功能,检测异常活动;
  • 监视系统日志、网络流量和事件,及时发现威胁和攻击行为;

13. 配置安全要求

操作系统安全配置:

  • 对操作系统进行必要的安全配置,如关闭不必要的服务、禁用不必要的端口等;
  • 对操作系统进行加固,例如修改默认密码、启用防火墙、限制用户访问权限等;

数据库安全配置:

  • 对数据库进行必要的安全配置,例如限制用户访问权限、采用安全的认证方式、定期备份数据等;
  • 对数据库的配置文件和日志进行保护,避免敏感信息泄露;

网络设备安全配置:

  • 对网络设备进行必要的安全配置,例如关闭不必要的服务、禁用不必要的端口等;
  • 对网络设备进行加固,例如修改默认密码、启用防火墙、限制用户访问权限等;

应用程序安全配置:

  • 对应用程序进行必要的安全配置,例如限制用户访问权限、采用安全的认证方式、开启防御性编程等;
  • 对应用程序的配置文件和日志进行保护,避免敏感信息泄露;

加密与认证:

  • 启用合适的加密算法和密钥管理,保障数据传输和存储的机密性;
  • 采用安全的认证方式,例如多因素身份认证、双因素认证等,保障系统的访问安全;

安全审计与监控:

  • 部署系统监控和安全审计措施,及时发现和处理异常情况;
  • 对系统日志进行收集和分析,以追踪和审计系统的操作记录。