# JAI 安全性

TIP

本章节详尽描述 JAI 系统的安全性,如有疑问,欢迎指正

# 前言

企业用户数据是企业的核心资产,我们将严肃对待安全问题。本节涵盖 JAI 本身的安全措施和您可进一步采取的安全措施以及如何报告相关安全问题。

# JAI 的安全保障

我们采用诸多安全措施保证开发者和用户的数据安全和交互安全。包括单不限于:

  1. 等保2.0合规基础(身份认证、用户授权、访问控制、安全审计)
  2. 零信任(ZeroTrust)安全解决方案

# 认证安全

  • 基于 OAuth 2.0 标准授权流程构建

OAuth 2.0 已经成为授权的工业级标准,其三段式授权可在简化开发者工作的同时充分保证用户数据和系统资源的安全性。JAI 的账号和认证解决方案是基于 OAuth 2.0 构建的授权验证系统,集合 OIDC 认证协议,通过用户的 ID Token 严格校验用户的所有权,可以让用户安全地在第三方应用验证身份信息。

  • 全站HTTPS

在网络传输层面,全站采用 HTTPS 保证数据安全。

# 授权安全

JAI 采用 RBAC、ABAC、PBAC等授权策略,安全管控用户、角色、分组、应用和组织的权限范围。

# 账号安全

  • 多因素认证

系统采用诸如一次性密码(OTP,如:邮箱动态码、手机动态码、TOTP 动态码)和生物识别技术(人脸、指纹),确保认证流程的安全性。

  • 密码安全存储

对于密码等敏感数据,采用符合业界标准的方式处理和存储。包括但不限于:

  • 不允许明文密码等敏感数据落地到硬盘。

  • 所有密码信息都经过特殊处理,加密后进行存储。

  • 所有密码都以加盐的方式进行加密,以防止彩虹表攻击。

  • 密码策略

除了多因素认证外,JAI 还支持高强度、全方位的密码安全策略,包括但不限于:密码长度校验、密码数字字母等组合校验、大小写校验、特殊符号校验、键盘物理位置横向(如01234567890)和斜向(如1qaz2wsx)连续字符校验以及常见的弱密码校验,从根本上解决用户密码易被破解的问题。

  • 登录策略

包含登录失败次数、异地登录检测和异时登录(非常规时间,如中国地区凌晨1点)检测。

  • 防暴力破解

手段包括但不限于:TOTP 动态码验证、手机验证码验证、邮箱验证码验证、图形动态码验证、手机扫码验证等。

# 云架构

应用云架构,面对突发的性能需求,可以提供不间断业务的快速扩容能力。

# 风控

JAI 团队有曾在 IBM 和某安全领域公司从事多年风控、反欺诈、反薅羊毛工作的安全专家,为安全保驾护航。

# 你可采取的安全措施

安全不是一方的问题,更是一个整体问题,必须要求参与系统的各方协调配合,以下是您可进一步采取的安全措施。

# 安全设置应用回调URI(网站)

获取 Authorization Code 时,如果使用的应用回调 URI 不是您之前控制台预设的,JAI 会提示出错,这是非常重要的安全设计。

你应该谨慎设置应用回调 URI,否则可能出现安全隐患。比如说,如果你的网站 host 在二级域名 abc.example.com 下,就不应设置主域名 example.com 为应用回调 URI,否则,不可信的 example.com 就可能窃取你的用户信息。

# 严格校验 OAuth 流程中回传的 State

state 在 OAuth 授权流程中是一个非必要但很重要的参数,如 《The OAuth 2.0 Authorization Framework》 (opens new window) 4.4.1 (opens new window) 章节中关于 state 的解释:

RECOMMENDED. An opaque value used by the client to maintain state between the request and callback. The authorization server includes this value when redirecting the user-agent back to the client. The parameter SHOULD be used for preventing cross-site request forgery as described in Section 10.12.

state 是用来保持授权会话流程完整性,防止CSRF 攻击的安全的随机的参数。关于 CSRF 的产生原因,请参考:https://tools.ietf.org/html/rfc6749#section-10.12 (opens new window)

因此,客户端在 OAuth 流程前后,务必要校验 state 的合法性。

# 安全存储应用 Secret

Client Secret 相当于您的应用在 JAI 的密码,泄露后可能导致用户数据泄露。如果存储在客户端,可能被反编译恶意窃取。我们建议:

  • 将 Secret 放在服务端,由服务端中转接口调用请求。
  • 使用第三方代码托管服务时,勿将 Secret 提交到代码库。

# 报告安全问题

在现代软件系统的构建过程中,安全性漏洞无可避免。

为了给我们时间响应并升级系统,我们建议你私下报告安全问题。请联系技术支持(support@fujieid.com),提供问题详情以及重现步骤,我们会尽快响应。

**修复安全问题的优先级绝对高于修复其他问题!!!**如果一个版本修复了严重的安全问题,我们会标记其为“紧急”,并通知所有相关企业或者个人开发者用户进行升级,并且提供专门的技术支持人员协助完成升级。

最后更新时间: 1/19/2021, 1:50:12 PM