@eggjs/security 5.0.0-beta.20 → 5.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +5 -9
- package/dist/agent.js +11 -15
- package/dist/app/extend/agent.d.ts +4 -9
- package/dist/app/extend/agent.js +8 -12
- package/dist/app/extend/application.d.ts +8 -4
- package/dist/app/extend/application.js +32 -4
- package/dist/app/extend/context.d.ts +58 -4
- package/dist/app/extend/context.js +244 -4
- package/dist/app/extend/helper.d.ts +10 -22
- package/dist/app/extend/helper.js +5 -17
- package/dist/app/extend/response.d.ts +35 -4
- package/dist/app/extend/response.js +83 -5
- package/dist/app/middleware/securities.d.ts +4 -8
- package/dist/app/middleware/securities.js +52 -49
- package/dist/app.d.ts +5 -9
- package/dist/app.js +26 -24
- package/dist/config/config.default.d.ts +867 -2
- package/dist/config/config.default.js +366 -3
- package/dist/config/config.local.d.ts +2 -5
- package/dist/config/config.local.js +8 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.js +5 -8
- package/dist/lib/extend/safe_curl.d.ts +16 -3
- package/dist/lib/extend/safe_curl.js +25 -3
- package/dist/lib/helper/cliFilter.d.ts +4 -2
- package/dist/lib/helper/cliFilter.js +17 -3
- package/dist/lib/helper/escape.d.ts +2 -2
- package/dist/lib/helper/escape.js +3 -3
- package/dist/lib/helper/escapeShellArg.d.ts +1 -2
- package/dist/lib/helper/escapeShellArg.js +5 -3
- package/dist/lib/helper/escapeShellCmd.d.ts +1 -2
- package/dist/lib/helper/escapeShellCmd.js +14 -3
- package/dist/lib/helper/index.d.ts +19 -22
- package/dist/lib/helper/index.js +21 -13
- package/dist/lib/helper/shtml.d.ts +2 -2
- package/dist/lib/helper/shtml.js +69 -4
- package/dist/lib/helper/sjs.d.ts +4 -2
- package/dist/lib/helper/sjs.js +49 -3
- package/dist/lib/helper/sjson.d.ts +1 -2
- package/dist/lib/helper/sjson.js +39 -4
- package/dist/lib/helper/spath.d.ts +5 -2
- package/dist/lib/helper/spath.js +25 -3
- package/dist/lib/helper/surl.d.ts +2 -2
- package/dist/lib/helper/surl.js +30 -3
- package/dist/lib/middlewares/csp.d.ts +3 -6
- package/dist/lib/middlewares/csp.js +57 -4
- package/dist/lib/middlewares/csrf.d.ts +3 -6
- package/dist/lib/middlewares/csrf.js +37 -4
- package/dist/lib/middlewares/dta.d.ts +2 -5
- package/dist/lib/middlewares/dta.js +12 -4
- package/dist/lib/middlewares/hsts.d.ts +3 -6
- package/dist/lib/middlewares/hsts.js +21 -4
- package/dist/lib/middlewares/index.d.ts +11 -16
- package/dist/lib/middlewares/index.js +23 -14
- package/dist/lib/middlewares/methodnoallow.d.ts +2 -5
- package/dist/lib/middlewares/methodnoallow.js +20 -3
- package/dist/lib/middlewares/noopen.d.ts +3 -6
- package/dist/lib/middlewares/noopen.js +15 -4
- package/dist/lib/middlewares/nosniff.d.ts +3 -6
- package/dist/lib/middlewares/nosniff.js +28 -4
- package/dist/lib/middlewares/referrerPolicy.d.ts +3 -6
- package/dist/lib/middlewares/referrerPolicy.js +35 -4
- package/dist/lib/middlewares/xframe.d.ts +3 -6
- package/dist/lib/middlewares/xframe.js +17 -4
- package/dist/lib/middlewares/xssProtection.d.ts +3 -6
- package/dist/lib/middlewares/xssProtection.js +14 -4
- package/dist/lib/utils.d.ts +12 -17
- package/dist/lib/utils.js +192 -3
- package/dist/types.d.ts +36 -3
- package/dist/types.js +2 -3
- package/package.json +6 -6
- package/dist/application-COC0mYEe.js +0 -32
- package/dist/application-n5bk2L_z.d.ts +0 -12
- package/dist/cliFilter-7BSD8Nc_.js +0 -18
- package/dist/cliFilter-DKZxCxSe.d.ts +0 -7
- package/dist/config.default-AcwQOAG0.js +0 -166
- package/dist/config.default-D8v08Vox.d.ts +0 -870
- package/dist/context-C-N1IY85.d.ts +0 -95
- package/dist/context-e-QJTKfq.js +0 -191
- package/dist/csp-BW5AJd_f.js +0 -46
- package/dist/csrf-9aSLHiby.js +0 -33
- package/dist/dta-DVAKEpJ3.js +0 -13
- package/dist/escape-Dex_Pk9e.d.ts +0 -2
- package/dist/escape-p8-cW8c_.js +0 -7
- package/dist/escapeShellArg-BnzDicAC.d.ts +0 -4
- package/dist/escapeShellArg-C0v1ZeCl.js +0 -7
- package/dist/escapeShellCmd-CkAdyhtO.js +0 -15
- package/dist/escapeShellCmd-DQZZIHde.d.ts +0 -4
- package/dist/helper-DylzfQ_5.js +0 -25
- package/dist/hsts-CWMKNTEh.js +0 -19
- package/dist/methodnoallow-BAZONArS.js +0 -15
- package/dist/middlewares-CkQjv8t0.js +0 -27
- package/dist/noopen-C3jUBwoH.js +0 -17
- package/dist/nosniff-CcLkhX2I.js +0 -27
- package/dist/referrerPolicy-D4Uafq6c.js +0 -31
- package/dist/response-BFnHAJrV.js +0 -69
- package/dist/safe_curl-UlViaxoF.js +0 -19
- package/dist/safe_curl-mqZZv_YQ.d.ts +0 -20
- package/dist/shtml-CAquTzgV.d.ts +0 -6
- package/dist/shtml-CgF4kOx-.js +0 -53
- package/dist/sjs-Cbmkk5xS.js +0 -36
- package/dist/sjs-QZIJYS71.d.ts +0 -7
- package/dist/sjson-BetFnVR6.js +0 -32
- package/dist/sjson-O-vKJPws.d.ts +0 -4
- package/dist/spath-Bu9sy6Kz.js +0 -16
- package/dist/spath-DseDPHxf.d.ts +0 -7
- package/dist/surl-ClleTea7.js +0 -25
- package/dist/surl-JV70X_RZ.d.ts +0 -6
- package/dist/types-BZR2U30p.d.ts +0 -38
- package/dist/types-DnJpiSJb.js +0 -1
- package/dist/utils-Cajs5P8M.js +0 -127
- package/dist/xframe-q9fEZkVI.js +0 -18
- package/dist/xssProtection-D5QsHX-e.js +0 -17
|
@@ -1,5 +1,83 @@
|
|
|
1
|
-
import
|
|
2
|
-
import "
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Response } from 'egg';
|
|
2
|
+
import SecurityContext from "./context.js";
|
|
3
|
+
const unsafeRedirect = Response.prototype.redirect;
|
|
4
|
+
export default class SecurityResponse extends Response {
|
|
5
|
+
/**
|
|
6
|
+
* This is an unsafe redirection, and we WON'T check if the
|
|
7
|
+
* destination url is safe or not.
|
|
8
|
+
* Please DO NOT use this method unless in some very special cases,
|
|
9
|
+
* otherwise there may be security vulnerabilities.
|
|
10
|
+
*
|
|
11
|
+
* @function Response#unsafeRedirect
|
|
12
|
+
* @param {String} url URL to forward
|
|
13
|
+
* @example
|
|
14
|
+
* ```js
|
|
15
|
+
* ctx.response.unsafeRedirect('http://www.domain.com');
|
|
16
|
+
* ctx.unsafeRedirect('http://www.domain.com');
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
unsafeRedirect(url, alt) {
|
|
20
|
+
unsafeRedirect.call(this, url, alt);
|
|
21
|
+
}
|
|
22
|
+
// app.response.unsafeRedirect = app.response.redirect;
|
|
23
|
+
// delegate(app.context, 'response').method('unsafeRedirect');
|
|
24
|
+
/**
|
|
25
|
+
* A safe redirection, and we'll check if the URL is in
|
|
26
|
+
* a safe domain or not.
|
|
27
|
+
* We've overridden the default Koa's implementation by adding a
|
|
28
|
+
* white list as the filter for that.
|
|
29
|
+
*
|
|
30
|
+
* @function Response#redirect
|
|
31
|
+
* @param {String} url URL to forward
|
|
32
|
+
* @example
|
|
33
|
+
* ```js
|
|
34
|
+
* ctx.response.redirect('/login');
|
|
35
|
+
* ctx.redirect('/login');
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
redirect(url, alt) {
|
|
39
|
+
url = (url || '/').trim();
|
|
40
|
+
// Process with `//`
|
|
41
|
+
if (url[0] === '/' && url[1] === '/') {
|
|
42
|
+
url = '/';
|
|
43
|
+
}
|
|
44
|
+
// if begin with '/', it means an internal jump
|
|
45
|
+
if (url[0] === '/' && url[1] !== '\\') {
|
|
46
|
+
this.unsafeRedirect(url, alt);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
let urlObject;
|
|
50
|
+
try {
|
|
51
|
+
urlObject = new URL(url);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
url = '/';
|
|
55
|
+
this.unsafeRedirect(url);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const domainWhiteList = this.app.config.security.domainWhiteList;
|
|
59
|
+
if (urlObject.protocol !== 'http:' && urlObject.protocol !== 'https:') {
|
|
60
|
+
url = '/';
|
|
61
|
+
}
|
|
62
|
+
else if (!urlObject.hostname) {
|
|
63
|
+
url = '/';
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
if (domainWhiteList && domainWhiteList.length !== 0) {
|
|
67
|
+
if (!this.ctx.isSafeDomain(urlObject.hostname)) {
|
|
68
|
+
const message = `a security problem has been detected for url "${url}", redirection is prohibited.`;
|
|
69
|
+
if (process.env.NODE_ENV === 'production') {
|
|
70
|
+
this.app.coreLogger.warn('[@eggjs/security/response/redirect] %s', message);
|
|
71
|
+
url = '/';
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Exception will be thrown out in a non-PROD env.
|
|
75
|
+
return this.ctx.throw(500, message);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
this.unsafeRedirect(url);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRS9CLE9BQU8sZUFBZSxNQUFNLGNBQWMsQ0FBQztBQUUzQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUVuRCxNQUFNLENBQUMsT0FBTyxPQUFPLGdCQUFpQixTQUFRLFFBQVE7SUFHcEQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILGNBQWMsQ0FBQyxHQUFXLEVBQUUsR0FBWTtRQUN0QyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHVEQUF1RDtJQUN2RCw4REFBOEQ7SUFDOUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILFFBQVEsQ0FBQyxHQUFXLEVBQUUsR0FBWTtRQUNoQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFMUIsb0JBQW9CO1FBQ3BCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFFRCwrQ0FBK0M7UUFDL0MsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksU0FBYyxDQUFDO1FBQ25CLElBQUksQ0FBQztZQUNILFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2pFLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxPQUFPLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0RSxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ1osQ0FBQzthQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0IsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNaLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxlQUFlLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUMvQyxNQUFNLE9BQU8sR0FBRyxpREFBaUQsR0FBRywrQkFBK0IsQ0FBQztvQkFDcEcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLEVBQUUsQ0FBQzt3QkFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQyxDQUFDO3dCQUM1RSxHQUFHLEdBQUcsR0FBRyxDQUFDO29CQUNaLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixrREFBa0Q7d0JBQ2xELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUN0QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNGIn0=
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Application } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
//#region src/app/middleware/securities.d.ts
|
|
6
|
-
declare const _default: (_: unknown, app: Application) => compose.ComposedMiddleware<egg0.Context>;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { _default as default };
|
|
1
|
+
import compose from 'koa-compose';
|
|
2
|
+
import type { Application } from 'egg';
|
|
3
|
+
declare const _default: (_: unknown, app: Application) => compose.ComposedMiddleware<import("egg").Context>;
|
|
4
|
+
export default _default;
|
|
@@ -1,50 +1,53 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import "../../
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import compose from 'koa-compose';
|
|
3
|
+
import { pathMatching } from 'egg-path-matching';
|
|
4
|
+
import securityMiddlewares from "../../lib/middlewares/index.js";
|
|
5
|
+
export default (_, app) => {
|
|
6
|
+
const options = app.config.security;
|
|
7
|
+
const middlewares = [];
|
|
8
|
+
const defaultMiddlewares = typeof options.defaultMiddleware === 'string'
|
|
9
|
+
? options.defaultMiddleware
|
|
10
|
+
.split(',')
|
|
11
|
+
.map(m => m.trim())
|
|
12
|
+
.filter(m => !!m)
|
|
13
|
+
: options.defaultMiddleware;
|
|
14
|
+
if (options.match || options.ignore) {
|
|
15
|
+
app.coreLogger.warn('[@eggjs/security/middleware/securities] Please set `match` or `ignore` on sub config');
|
|
16
|
+
}
|
|
17
|
+
// format csrf.cookieDomain
|
|
18
|
+
const originalCookieDomain = options.csrf.cookieDomain;
|
|
19
|
+
if (originalCookieDomain && typeof originalCookieDomain !== 'function') {
|
|
20
|
+
options.csrf.cookieDomain = () => originalCookieDomain;
|
|
21
|
+
}
|
|
22
|
+
defaultMiddlewares.forEach(middlewareName => {
|
|
23
|
+
const opt = Reflect.get(options, middlewareName);
|
|
24
|
+
if (opt === false) {
|
|
25
|
+
app.coreLogger.warn('[egg-security] Please use `config.security.%s = { enable: false }` instead of `config.security.%s = false`', middlewareName, middlewareName);
|
|
26
|
+
}
|
|
27
|
+
assert(opt === false || typeof opt === 'object', `config.security.${middlewareName} must be an object, or false(if you turn it off)`);
|
|
28
|
+
if (opt === false || (opt && opt.enable === false)) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (middlewareName === 'csrf' && opt.useSession && !app.plugins.session) {
|
|
32
|
+
throw new Error('csrf.useSession enabled, but session plugin is disabled');
|
|
33
|
+
}
|
|
34
|
+
// use opt.match first (compatibility)
|
|
35
|
+
if (opt.match && opt.ignore) {
|
|
36
|
+
app.coreLogger.warn('[@eggjs/security/middleware/securities] `options.match` and `options.ignore` are both set, using `options.match`');
|
|
37
|
+
opt.ignore = undefined;
|
|
38
|
+
}
|
|
39
|
+
if (!opt.ignore && opt.blackUrls) {
|
|
40
|
+
app.deprecate('[@eggjs/security/middleware/securities] Please use `config.security.xframe.ignore` instead, `config.security.xframe.blackUrls` will be removed very soon');
|
|
41
|
+
opt.ignore = opt.blackUrls;
|
|
42
|
+
}
|
|
43
|
+
// set matching function to security middleware options
|
|
44
|
+
opt.matching = pathMatching(opt);
|
|
45
|
+
const createMiddleware = securityMiddlewares[middlewareName];
|
|
46
|
+
const fn = createMiddleware(opt);
|
|
47
|
+
middlewares.push(fn);
|
|
48
|
+
app.coreLogger.info('[@eggjs/security/middleware/securities] use %s middleware', middlewareName);
|
|
49
|
+
});
|
|
50
|
+
app.coreLogger.info('[@eggjs/security/middleware/securities] compose %d middlewares into one security middleware', middlewares.length);
|
|
51
|
+
return compose(middlewares);
|
|
47
52
|
};
|
|
48
|
-
|
|
49
|
-
//#endregion
|
|
50
|
-
export { securities_default as default };
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvbWlkZGxld2FyZS9zZWN1cml0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLE9BQU8sTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE9BQU8sbUJBQW1CLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsZUFBZSxDQUFDLENBQVUsRUFBRSxHQUFnQixFQUFFLEVBQUU7SUFDOUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDcEMsTUFBTSxXQUFXLEdBQXFCLEVBQUUsQ0FBQztJQUN6QyxNQUFNLGtCQUFrQixHQUN0QixPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyxRQUFRO1FBQzNDLENBQUMsQ0FBRSxPQUFPLENBQUMsaUJBQWlCO2FBQ3ZCLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDbEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBOEI7UUFDbEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUVoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHNGQUFzRixDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3ZELElBQUksb0JBQW9CLElBQUksT0FBTyxvQkFBb0IsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN2RSxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztJQUN6RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1FBQzFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBUSxDQUFDO1FBQ3hELElBQUksR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNqQiw0R0FBNEcsRUFDNUcsY0FBYyxFQUNkLGNBQWMsQ0FDZixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sQ0FDSixHQUFHLEtBQUssS0FBSyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFDeEMsbUJBQW1CLGNBQWMsa0RBQWtELENBQ3BGLENBQUM7UUFFRixJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxjQUFjLEtBQUssTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2pCLGtIQUFrSCxDQUNuSCxDQUFDO1lBQ0YsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxHQUFHLENBQUMsU0FBUyxDQUNYLDBKQUEwSixDQUMzSixDQUFDO1lBQ0YsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQzdCLENBQUM7UUFDRCx1REFBdUQ7UUFDdkQsR0FBRyxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM3RCxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25HLENBQUMsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2pCLDZGQUE2RixFQUM3RixXQUFXLENBQUMsTUFBTSxDQUNuQixDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDIn0=
|
package/dist/app.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
constructor(app: Application);
|
|
7
|
-
configWillLoad(): void;
|
|
1
|
+
import type { ILifecycleBoot, Application } from 'egg';
|
|
2
|
+
export default class AppBoot implements ILifecycleBoot {
|
|
3
|
+
private readonly app;
|
|
4
|
+
constructor(app: Application);
|
|
5
|
+
configWillLoad(): void;
|
|
8
6
|
}
|
|
9
|
-
//#endregion
|
|
10
|
-
export { AppBoot as default };
|
package/dist/app.js
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
import { preprocessConfig } from "./utils
|
|
2
|
-
import { SecurityConfig } from "./config.default
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
import { preprocessConfig } from "./lib/utils.js";
|
|
2
|
+
import { SecurityConfig } from "./config/config.default.js";
|
|
3
|
+
export default class AppBoot {
|
|
4
|
+
app;
|
|
5
|
+
constructor(app) {
|
|
6
|
+
this.app = app;
|
|
7
|
+
}
|
|
8
|
+
configWillLoad() {
|
|
9
|
+
const app = this.app;
|
|
10
|
+
app.config.coreMiddleware.push('securities');
|
|
11
|
+
// parse config and check if config is legal
|
|
12
|
+
const parsed = SecurityConfig.parse(app.config.security);
|
|
13
|
+
if (typeof app.config.security.csrf === 'boolean') {
|
|
14
|
+
// support old config: `config.security.csrf = false`
|
|
15
|
+
app.config.security.csrf = parsed.csrf;
|
|
16
|
+
}
|
|
17
|
+
if (app.config.security.csrf.enable) {
|
|
18
|
+
const { ignoreJSON } = app.config.security.csrf;
|
|
19
|
+
if (ignoreJSON) {
|
|
20
|
+
app.deprecate('[@eggjs/security/app] `config.security.csrf.ignoreJSON` is not safe now, please disable it.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
preprocessConfig(app.config.security);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxPQUFPO0lBQ1QsR0FBRyxDQUFDO0lBRXJCLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3Qyw0Q0FBNEM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELElBQUksT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEQscURBQXFEO1lBQ3JELEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2hELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUFDO1lBQy9HLENBQUM7UUFDSCxDQUFDO1FBRUQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0YifQ==
|