Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

  • 工程能力

  • 应用基础

    • 兼容性

    • 前端安全

      • XSS 防护组件
      • 前端安全开发总结
        • 1. 有哪些风险
          • 1.1 按端分类
          • 1.1.1 Web 安全
          • 1.1.2 传输层安全
          • 1.1.3 跨端安全
          • 1.1.4 服务端安全
          • 1.1.5 合规
          • 1.2 按风险类型分类
          • 1.2.1 合规
          • 1.2.2 敏感信息
          • 1.2.3 依赖问题
          • 1.2.4 安全风险
        • 2. 如何发现风险
        • 3. 如何防护风险
        • 4. 系统解决方案(WIP)
        • 5. 安全研发流程
    • 国际化

    • 性能优化

    • 换肤

    • 无障碍

  • 专业领域

  • 业务场景

  • 大前端
  • 应用基础
  • 前端安全
gahing
2023-05-16
目录

前端安全开发总结草稿

# 1. 有哪些风险

# 1.1 按端分类

# 1.1.1 Web 安全

  • CSRF

    双重 token 校验:发送鉴权请求->注入 Cookie + 鉴权响应头->真实请求发送(携带 token 和 Cookie)

  • XSS

    使用 xss npm 包,基于白名单的策略防护

  • 钓鱼攻击
    • 任意 URL 重定向: https://www.cnblogs.com/NoId/p/16631462.html 通过配置白名单进行跳转拦截
    • 外链 opener 修改原页面:禁用
  • iframe 风险
    • 嵌套第三方页面:开启 sandbox 进行防护
    • 被钓鱼网站嵌套:配置 x-frame-options
  • 跨域风险
    • CORS 需要配置白名单
  • MIME 嗅探

    客户端认为文件 MIME 配置不对,通过查看资源进行嗅探,进而可能造成文件执行。比如把一段 JS 脚本伪装成 IMG 让用户加载。配置 X-Content-Type-Options 关闭 MIME 嗅探

  • CSS Injection

    https://vwzq.net/slides/2019-s3_css_injection_attacks.pdf 、用 CSS 來偷資料 (opens new window)

  • 信息泄露
    • 内网信息泄露
    • process.env 对象暴露
    • 敏感信息传输加密:下发秘钥加密敏感参数,服务端解密
    • SourceMap 上传外网
    • 敏感代码加固:对加解密等核心 JS 代码转化为二进制字节码,运行在虚拟机
    • 添加水印:明水印、暗水印
    • 数据脱敏:比如身份证、手机号等需要用 * 字符替换
    • Cookie 安全策略:根据使用场景合理配置 Cookie
  • 其他
    • HTML 文件使用 UTF-8 编码:避免绕过一些防御措施

# 1.1.2 传输层安全

  • HTTP 劫持

    DNS 污染,开启 HTTPS 解决

  • CDN 回源劫持

    CDN 投毒,见 https://ph4ntonn.github.io/Web-Cache-Poisoning ;使用 SRI (opens new window)(子资源完整性)解决,如 integrity 属性

  • HTTPS 剥离攻击

    黑客利用 SSL Stripping (opens new window) 攻击(未带协议头浏览器默认使用 HTTP 访问)让 HTTPS 降级为 HTTP ,可以使用 HSTS 方案防护

  • TLS 证书无效

    证书过期将重新出现 HTTP 劫持问题;注意 BGP 劫持无法预防,只能尽早发现。可以利用无头浏览器访问并获取证书剩余有效时间

  • 证书伪造

    CA 签发证书相对随意;浏览器引入证书透明度策略,通过 Expect-CT HTTP Header 开启

  • 私有网络访问

    浏览器安全防护策略。页面请求了比当前页面更私有的请求,浏览器会进行拦截,可通过 Access-Control-Allow-Private-Network 响应头豁免

# 1.1.3 跨端安全

  • JSB 鉴权漏洞

    任意页面可直接调用 JSB 方法;解决方案:根据页面来源做鉴权管控,并对 JSB 进行分级。案例:闲鱼支付运费诈骗

  • Electron 安全设置

    不安全的启动参数和 browserWindow 配置,详见 https://yuzhigang5460.gitbook.io/electron/tutorial/security

# 1.1.4 服务端安全

  • SSRF 请求伪造

    攻击外网无法访问的内网系统,可通过白名单解决

  • 注入攻击
    • SQL 注入
    • 动态脚本执行注入:服务端动态执行代码,可通过 Sandbox 防护
    • 动态命令执行注入:动态执行 shell 命令
    • 任意目录遍历注入:web安全目录遍历漏洞学习及绕过 (opens new window)
  • 任意文件上传

    https://www.freebuf.com/vuls/279171.html

  • ReDOS(正则表达式拒绝服务攻击)

    构造特殊字符让服务器的正则校验变慢,消耗系统资源 ,http://mykings.me/2017/01/03/%E6%B5%85%E6%9E%90-ReDoS-%E7%9A%84%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/ 。可以使用 safe-regex、rxxr2 等工具编写无漏洞的 RegEx ,也可以使用 Google 的 re2 引擎代替 Node.js 默认的 RegEx 引擎

  • 信息泄露
    • 日志数据脱敏
    • 鉴权信息硬编码
    • Node.js 源码加固
  • 其他
    • 三方依赖漏洞:定时升级
    • 请求大小限制:避免服务端带宽浪费,一般服务器也会有默认的一些限制。请求实体限制、请求头部限制,URL 长度限制
    • 避免弱加密是算法,防止爆破和碰撞风险

# 1.1.5 合规

  • 第三方依赖合规

    遵守开源协议

  • 禁止海外数据回传国内
    • 跨境域名访问
  • 避免滥用浏览器指纹
  • GDRP 合规(欧盟一般数据保护条例)
    • 非用户同意不能使用三方追踪技术:弹出 Cookies Banner
    • 使用 GA、GTAG 必须开启 IP 匿名化: https://codechilli.lk/ip-anonymization-ip-masking-in-google-analytics-universal-analytics-ga4/
  • 其他
    • 海外项目含有中文硬编码
    • 海外项目含有国内产品信息硬编码
    • 产品名称错别字

# 1.2 按风险类型分类

# 1.2.1 合规

同 1.1.5

# 1.2.2 敏感信息

  • 内网域名泄露
  • 环境变量泄露
  • 员工信息泄露
  • 鉴权信息泄露
  • 调试信息泄露

    比如 console.log 未删除,携带敏感调试信息

# 1.2.3 依赖问题

  • 使用授权不清的依赖
  • 使用有开源协议合规风险的依赖
  • 使用有安全漏洞的依赖

# 1.2.4 安全风险

见 1.1.1 ~ 1.1.4

# 2. 如何发现风险

  • 自动扫描
  • 人工渗透

# 3. 如何防护风险

  • 浏览器策略防护
  • 漏洞防护
  • 代码安全
    • 混淆
    • 加固
  • 数据安全防护
    • 脱敏
    • 反扒
    • 水印
    • 鉴权
    • 加密

# 4. 系统解决方案(WIP)

待梳理,分为卡点流程、检测原理、修复方案三个环节

# 5. 安全研发流程

  • 评审
    • 合规评审(若有)
    • 安全技术评审(若有)
  • 开发
    • 研发规范
    • 研发工具:IDE 插件、Chrome 拓展
  • 上线前
    • MR Action 构建产物检测
    • 小流量测试验证
  • 上线后
    • 日常巡检:定时扫描+人工测试
    • 安全监控
编辑 (opens new window)
上次更新: 2024/09/01, 23:56:56
XSS 防护组件
前端国际化开发总结

← XSS 防护组件 前端国际化开发总结→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式