概述
现在甲方的安全工作很大一部分都是围绕防御来做的,而攻防之间本来就信息不对称,因为攻只需一个点,而防得一个面,迫使防御方需要能早知道攻击者的行为,才能针对性设防,这就使得安全工作经常处于被动局面。结合互联网已公开的一些漏洞来看,很有必要为企业建立一套适合自身业务的安全基线,并严格执行,减少低级漏洞的产生,这样安全工程师才会有更多的精力放在对抗上,从而扭转部分被动局面。
安全基线
认证与鉴权
错误提示
登录错误必须统一字样,比如用户名或密码错误时,返回“错误的用户名或密码”。
服务端抛出的错误禁止直接返回给接口,仅返回“Error”字样,错误内容打到相关服务日志。
登录与注销
有登录功能的系统就必须有注销功能。
后台界面
后台页面必须对用户身份和访问权限进行检查
账号锁定
所有提供外网访问功能的系统,必须启用账号登录失败锁定策略(如3分钟20次登录失败,锁定30分钟)
验证码
管理系统
后台管理系统或其他重要系统登录必须设置验证码
有效期
必须设置有效期,且有效期内仅可使用一次
发送频率
以短信或邮件方式发送验证码时,必须限制同一ID或接受者的验证码发送频率
会话安全
会话超时
会话token/session必须设有超时机制
会话更新
用户登录成功后,必须更新会话ID,用户注销/重置密码后,必须强制token/session过期。
Cookie
HttpOnly
cookie参数中session id等认证相关的字段必须设置HttpOnly
HTTPS传输必须为cookie设置secure
上传下载
文件判断
对上传文件后缀进行白名单限制,严格校验文件内容与类型是否匹配
目录跳转
禁止客户端自定义文件下载路径(如:使用../../../../进行跳转)
目录权限
存储上传文件的目录必须禁止脚本执行权限
传输安全
参数提交
禁止通过 HTTP GET 方式提交不安全算法处理过的用户密码
明文传输
禁止通过 HTTP 明文传输用户登录密码、支付密码、银行卡号等敏感数据
支付安全
禁止在支付密码的传输过程中使用不安全算法
存储安全
敏感数据存储
禁止数据库、日志文件中明文存储用户登录密码、支付密码、银行卡号、身份证号码等敏感数据
日志审计
审计内容
自建用户系统,必须记录:时间/用户ID/操作/结果/IP等信息
日志清除
除审计用户外,其他人员不应该具备日志修改、删除、清空的权限,必须记录清空日志的行为
日志存储
禁止将日志直接保存在可被浏览器访问到的WEB目录中
其他
后门
禁止在代码中留置后门
最后
基线制定事简单,关键在于如何推动研发遵循,而这个问题又可以开一篇文章聊了。
参考
- VIP产品设计与开发红线 v2.0