3.16.1 • Published 9 days ago

@midwayjs/security v3.16.1

Weekly downloads
-
License
MIT
Repository
-
Last release
9 days ago

Security 安全组件

适用于 @midwayjs/faas@midwayjs/web@midwayjs/koa@midwayjs/express 多种框架的通用安全组件,支持 csrfxss 等多种安全策略。

安装使用

  1. 安装依赖
tnpm i @midwayjs/security --save
  1. 在 configuration 中引入组件,
import * as Security from '@midwayjs/security';
@Configuration({
  imports: [
    // ...other components
    Security
  ],
})
export class AutoConfiguration {}

配置

// 默认配置
export const security = {
  csrf: {
    enable: true,
    type: 'ctoken',
    useSession: false,
    cookieName: 'csrfToken',
    sessionName: 'csrfToken',
    headerName: 'x-csrf-token',
    bodyName: '_csrf',
    queryName: '_csrf',
    refererWhiteList: [],
  },
  xframe: {
    enable: true,
    value: 'SAMEORIGIN',
  },
  csp: {
    enable: false,
  },
  hsts: {
    enable: false,
    maxAge: 365 * 24 * 3600,
    includeSubdomains: false,
  },
  noopen: {
    enable: false,
  },
  nosniff: {
    enable: false,
  },
  xssProtection: {
    enable: true,
    value: '1; mode=block',
  },
}

csrf

配置项类型作用描述默认值
enableboolean是否开启true
type'all' / 'any' / 'ctoken' / 'referer'csrf 校验类型,all/any 等于 ctoken + referer'ctoken' 从query/header/body 中获取 csrf token
useSessionbooleancsrf token 是否存放在 session 中false,默认存放在 cookies 中
cookieNamestringtoken 在 cookie 中存放的 字段'csrfToken'
sessionNamestringtoken 在 session 中存放的 字段'csrfToken'
headerNamestringtoken 在 header 中存放的 字段'x-csrf-token'
bodyNamestringtoken 在 body 中存放的 字段'_csrf'
queryNamestringtoken 在 query 中存放的 字段'_csrf'
refererWhiteListArray允许的来源白名单[]

xframe

xframe 用来配置 X-Frame-Options 响应头,用来给浏览器指示允许一个页面可否在 frame, iframe, embed 或者 object 中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking 攻击。

X-Frame-Options 有三个可能的值:

配置项类型作用描述默认值
enableboolean是否开启true
valuestringX-Frame-Options 值'SAMEORIGIN'

hsts

HTTP Strict Transport Security(通常简称为 HSTS )是一个安全功能,它告诉浏览器只能通过 HTTPS 访问当前资源,而不是 HTTP

配置项类型作用描述默认值
enableboolean是否开启false
maxAgenumber在浏览器收到这个请求后的多少 时间内凡是访问这个域名下的请求都使用HTTPS请求365 * 24 * 3600 即一年
includeSubdomainsboolean此规则是否适用于该网站的所有子域名false

csp

HTTP 响应头 Content-Security-Policy 允许站点管理者控制指定的页面加载哪些资源。这将帮助防止跨站脚本攻击(XSS)。

配置项类型作用描述默认值
enableboolean是否开启false
policyObject<key: string, value: string / string[] / boolean>策略列表{}
reportOnlyboolean是否开启false
supportIEboolean是否支持IE浏览器false

详细的 policy 配置可以参考: Content Security Policy (CSP) 是什么?阿里聚安全

noopen

用于指定 IE 8 以上版本的用户不打开文件而直接保存文件。在下载对话框中不显示“打开”选项。

配置项类型作用描述默认值
enableboolean是否开启false

nosniff

开启后,如果从 scriptstylesheet 读入的文件的 MIME 类型与指定 MIME 类型不匹配,不允许读取该文件。用于防止 XSS 等跨站脚本攻击。

配置项类型作用描述默认值
enableboolean是否开启false

xssProtection

用于启用浏览器的XSS过滤功能,以防止 XSS 跨站脚本攻击。

X-XSS-Protection 响应头是 IEChromeSafari 的一个特性,当检测到跨站脚本攻击 (XSS (en-US))时,浏览器将停止加载页面。若网站设置了良好的 Content-Security-Policy 来禁用内联 JavaScript ('unsafe-inline'),现代浏览器不太需要这些保护, 但其仍然可以为尚不支持 CSP 的旧版浏览器的用户提供保护。

X-XSS-Protection 可以配置下述四个值

  • 0: 禁止XSS过滤。
  • 1:启用XSS过滤(通常浏览器是默认的)。 如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分)。
  • 1;mode=block:启用XSS过滤。 如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载。
  • 1; report=<reporting-URI>: Chromium only,启用XSS过滤。 如果检测到跨站脚本攻击,浏览器将清除页面并使用CSP report-uri (en-US)指令的功能发送违规报告。
配置项类型作用描述默认值
enableboolean是否开启false
valuestringX-XSS-Protection 配置1; mode=block
3.16.1

9 days ago

3.16.0

11 days ago

3.15.11

22 days ago

3.15.10

28 days ago

3.15.8

1 month ago

3.15.7

2 months ago

3.15.6

2 months ago

3.15.3

2 months ago

3.15.2

2 months ago

3.15.1

3 months ago

3.15.0

3 months ago

3.14.12

3 months ago

3.14.11

3 months ago

3.14.10

3 months ago

3.14.7

4 months ago

3.14.4

4 months ago

3.14.3

4 months ago

3.14.0

4 months ago

3.13.9

5 months ago

3.13.8

5 months ago

3.13.7

5 months ago

3.13.6

5 months ago

3.13.5

5 months ago

3.13.2

6 months ago

3.13.1

6 months ago

3.13.4

6 months ago

3.13.3

6 months ago

3.12.1

9 months ago

3.12.0

9 months ago

3.12.10

6 months ago

3.13.0

6 months ago

3.12.3

9 months ago

3.12.2

9 months ago

3.12.5

8 months ago

3.12.7

7 months ago

3.12.8

7 months ago

3.11.12

10 months ago

3.11.15

10 months ago

3.11.7

1 year ago

3.11.9

12 months ago

3.11.11

11 months ago

3.11.10

12 months ago

3.10.15

1 year ago

3.10.16

1 year ago

3.11.4

1 year ago

3.11.3

1 year ago

3.11.6

1 year ago

3.11.5

1 year ago

3.11.0

1 year ago

3.11.1

1 year ago

3.10.10

1 year ago

3.10.13

1 year ago

3.10.14

1 year ago

3.10.11

1 year ago

3.10.12

1 year ago

3.10.1

1 year ago

3.10.0

1 year ago

3.10.3

1 year ago

3.10.5

1 year ago

3.10.4

1 year ago

3.10.7

1 year ago

3.10.6

1 year ago

3.10.9

1 year ago

3.10.8

1 year ago

3.9.9

1 year ago

3.9.1

1 year ago

3.9.0

1 year ago

3.8.0

1 year ago

3.7.3

2 years ago

3.6.0

2 years ago

3.7.1

2 years ago

3.7.0

2 years ago

3.4.13

2 years ago

3.5.3

2 years ago

3.5.2

2 years ago

3.5.1

2 years ago

3.5.0

2 years ago

3.4.0-beta.7

2 years ago

3.4.0-beta.6

2 years ago

3.4.0-beta.11

2 years ago

3.4.0-beta.5

2 years ago

3.4.0-beta.12

2 years ago

3.4.0-beta.4

2 years ago

3.4.0-beta.10

2 years ago

3.4.0-beta.9

2 years ago

3.4.0-beta.8

2 years ago

3.4.0-beta.3

2 years ago

3.4.0-beta.2

2 years ago

3.4.0-beta.1

2 years ago

3.4.0

2 years ago

3.4.4

2 years ago

3.4.3

2 years ago

3.4.1

2 years ago

3.4.10

2 years ago

3.4.11

2 years ago

3.4.12

2 years ago

3.4.8

2 years ago

3.4.7

2 years ago

3.4.6

2 years ago

3.4.9

2 years ago

3.3.11

2 years ago

3.3.9

2 years ago

3.3.6

2 years ago

3.1.7-alpha.0

2 years ago

3.3.1

2 years ago

3.2.2

2 years ago

3.3.0

2 years ago

3.2.1

2 years ago

3.2.0

2 years ago

3.3.5

2 years ago

3.3.4

2 years ago

3.1.6

2 years ago

3.3.3

2 years ago

3.3.2

2 years ago

3.1.3

2 years ago

3.1.2

2 years ago

3.0.13

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.1.5

2 years ago

3.1.4

2 years ago

3.0.11

2 years ago

3.0.10

2 years ago

3.0.9

2 years ago

3.0.8

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

3.0.4

2 years ago

3.0.4-beta.1

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

3.0.0-beta.17

2 years ago

3.0.0-beta.16

2 years ago