前端业务安全规范
基于【腾讯云ISV安全管理规范准则】,前端安全从以下几方面进行强制执行和规范
0. 基础安全规范(必须)
a. 项目代码使用腾讯coding托管,禁止在外部平台发布源代码、片段及伪代码
b. 前端严禁自己编写向非业务相关地址发送任何请求及数据的逻辑实现,如确有需求,需说明背景和实现方案并由腾讯业务侧老师和安全侧老师审议
c. 项目工程整站全站采取HTTPS协议
1. 前端攻击安全规范
1.1 XSS跨站漏洞安全规范(必须)
a. 对输入参数或字符进行类型或白名单判断
b. 根据场景进行输入和输出转义:& ' " < >等
c. 对Cookie设置HttpOnly=true
d. 对敏感Cookie设置Secure=true
e. 引入第三方包和组件时,进行智研[1]安全评估(联系腾讯侧架构和安全老师)
f. 使用通用的xss过滤工具[2]
1.2 CSRF安全规范(必须)
a. 后台增加校验token的同时,前端在对用户提交操作时进行token携带传输
b. 前端接入安全验证码,例如:腾讯云验证码[3]
c. Nodejs服务使用csrf中间件包[4]或jwt[5]
d. Cookie配置SameSite,防止仿造站点获取
1.3 点击劫持安全规范(必须)
a. 设置http头部X-Frame-Options选项
b. 可使用Frame Busting的形式判断敏感页面(或各个页面)是否保持在最上层,如非进行强制跳转
c. 过时版本浏览器提示用户升级,敏感项目不对低版本浏览器开放等[6]
2. 编码安全规范(必须)
本部分内容将在编码规范里说明
JS编码安全指南参见: 【外网版】TencentAlloyTeam Lint【内网版】辅助参考
3. 信息安全规范(必须)
a. 对涉及敏感数据传输的地方使用腾讯SSV提供的接口传输加密组件
b. 前端禁止编写采集业务需求外信息的脚本,监控使用腾讯云标准产品RUM[7],业务埋点使用腾讯大同[8]数据服务
c. 敏感数据不允许进行客户端本地化存储,系统化数据使用加密存储(敏感数据字段参考个保法要求)
d. 前端对敏感数据需要进行脱敏展示
e. 前端生产环境去除console,禁止使用alert
f. 前端工程编译使用obfuscator混淆加密[9]或同等加密插件
g. 前端工程编译部署都需要使用腾讯SSV提供的公共流水线
4. 文件安全规范(必须)
a. 前端使用cos进行用户提交附件存储时,所在存储桶必须使用私有读写,进行签名验证
b. 禁止使用cos存储系统相关文件(包括不限于系统信息,账密,测试环境信息等)
c. 生产环境cos文件需要通过标准化CD流程进行发布更新
d. 前端实现业务场景中的文件上传逻辑时,需要按照产品策略实现对文件类型和文件大小的完整校验规则
e. 项目工程中进行 .gitignore 设置,禁止携带 .git/.DS_Store/lock/node_modules 等相关信息
5. 流程安全规范(必须)
a. 使用非标准包和第三方库,需要腾讯侧老师进行安全评估
b. 非开发环境部署均由运维同学操作
c. 禁止使用cos客户端软件(cosbrowser)直接上传文件,如确有需要,需腾讯侧老师评估审核
6. 前端异常问题排查流程(建议)
6.1 用户无法打开页面或下载文件
a. 检查CDN链路是否畅通,缓存是否进行刷新预热
b. 检查COS资源是否部署成功
c. 检查RUM监控日志,排查用户操作链路
d. 根据用户浏览器版本检查项目是否有做polyfill,并根据1.3的安全规范,对低版本浏览器做提示页
e. 在条件允许的情况下,联系腾讯业务侧老师检查用户客户端是否存在安全风险问题
6.2 网站内容与预期不符
a. 多环境验证,排查是否为问题主机缓存问题
b. 检查是否存在灰度逻辑
c. 在条件允许的情况下,联系腾讯业务侧老师检查用户客户端是否被安全渗透或网站被仿冒
6.3 用户无法上传/预览文件
a. 检查RUM文件操作链路日志,是否存在前端验签接口失败报错
b. 检查RUM监控日志,确认用户网络类型,cos海外服务IPv6下会存在预览失败
c. 检查涉及文件操作(PutObject/GetObjectUrl)流程是否存在异常逻辑
d. 在条件允许的情况下,联系腾讯业务侧老师检查用户客户端文件请求链路是否被劫持
安全平台及工具说明
- 腾讯内部智研安全平台,组件按引入规范联系安全侧老师进行安全扫描评估
- XSS过滤工具,参考使用说明
- 腾讯云验证码,参考接入说明
- Nodejs CSRF中间件
- Nodejs JWT中间件
- 全球浏览器生存统计平台,参考使用说明
- 腾讯云前端性能监控(RUM),参考接入说明
- 腾讯大同数据上报平台,联系腾讯业务侧老师创建应用ID
- 前端混淆编译插件Obfuscator,参考使用说明
Update 2023.02