@eggjs/security 4.0.1 → 5.0.0-beta.17
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/README.md +46 -66
- package/README.zh-CN.md +56 -68
- package/dist/agent.d.ts +10 -0
- package/dist/agent.js +15 -0
- package/dist/app/extend/agent.d.ts +9 -0
- package/dist/app/extend/agent.js +12 -0
- package/dist/app/extend/application.d.ts +12 -0
- package/dist/app/extend/application.js +32 -0
- package/dist/app/extend/context.d.ts +61 -0
- package/dist/app/extend/context.js +191 -0
- package/dist/app/extend/helper.d.ts +24 -0
- package/dist/app/extend/helper.js +7 -0
- package/dist/app/extend/response.d.ts +39 -0
- package/dist/app/extend/response.js +70 -0
- package/dist/app/middleware/securities.d.ts +8 -0
- package/dist/app/middleware/securities.js +39 -0
- package/dist/app.d.ts +10 -0
- package/dist/app.js +24 -0
- package/dist/config/config.default.d.ts +870 -0
- package/dist/config/config.default.js +166 -0
- package/dist/config/config.local.d.ts +6 -0
- package/dist/config/config.local.js +5 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -0
- package/dist/lib/extend/safe_curl.d.ts +20 -0
- package/dist/lib/extend/safe_curl.js +19 -0
- package/dist/lib/helper/cliFilter.d.ts +7 -0
- package/dist/lib/helper/cliFilter.js +18 -0
- package/dist/lib/helper/escape.d.ts +2 -0
- package/dist/lib/helper/escape.js +7 -0
- package/dist/lib/helper/escapeShellArg.d.ts +4 -0
- package/dist/lib/helper/escapeShellArg.js +7 -0
- package/dist/lib/helper/escapeShellCmd.d.ts +4 -0
- package/dist/lib/helper/escapeShellCmd.js +15 -0
- package/dist/lib/helper/index.d.ts +24 -0
- package/dist/lib/helper/index.js +25 -0
- package/dist/lib/helper/shtml.d.ts +6 -0
- package/dist/lib/helper/shtml.js +53 -0
- package/dist/lib/helper/sjs.d.ts +7 -0
- package/dist/lib/helper/sjs.js +36 -0
- package/dist/lib/helper/sjson.d.ts +4 -0
- package/dist/lib/helper/sjson.js +32 -0
- package/dist/lib/helper/spath.d.ts +7 -0
- package/dist/lib/helper/spath.js +16 -0
- package/dist/lib/helper/surl.d.ts +6 -0
- package/dist/lib/helper/surl.js +25 -0
- package/dist/lib/middlewares/csp.d.ts +7 -0
- package/dist/lib/middlewares/csp.js +46 -0
- package/dist/lib/middlewares/csrf.d.ts +7 -0
- package/dist/lib/middlewares/csrf.js +33 -0
- package/dist/lib/middlewares/dta.d.ts +6 -0
- package/dist/lib/middlewares/dta.js +13 -0
- package/dist/lib/middlewares/hsts.d.ts +7 -0
- package/dist/lib/middlewares/hsts.js +19 -0
- package/dist/lib/middlewares/index.d.ts +18 -0
- package/dist/lib/middlewares/index.js +27 -0
- package/dist/lib/middlewares/methodnoallow.d.ts +6 -0
- package/dist/lib/middlewares/methodnoallow.js +15 -0
- package/dist/lib/middlewares/noopen.d.ts +7 -0
- package/dist/lib/middlewares/noopen.js +17 -0
- package/dist/lib/middlewares/nosniff.d.ts +7 -0
- package/dist/lib/middlewares/nosniff.js +27 -0
- package/dist/lib/middlewares/referrerPolicy.d.ts +7 -0
- package/dist/lib/middlewares/referrerPolicy.js +31 -0
- package/dist/lib/middlewares/xframe.d.ts +7 -0
- package/dist/lib/middlewares/xframe.js +18 -0
- package/dist/lib/middlewares/xssProtection.d.ts +7 -0
- package/dist/lib/middlewares/xssProtection.js +17 -0
- package/dist/lib/utils.d.ts +24 -0
- package/dist/lib/utils.js +127 -0
- package/dist/types.d.ts +38 -0
- package/dist/types.js +1 -0
- package/package.json +75 -71
- package/dist/commonjs/agent.d.ts +0 -6
- package/dist/commonjs/agent.js +0 -14
- package/dist/commonjs/app/extend/agent.d.ts +0 -5
- package/dist/commonjs/app/extend/agent.js +0 -11
- package/dist/commonjs/app/extend/application.d.ts +0 -16
- package/dist/commonjs/app/extend/application.js +0 -35
- package/dist/commonjs/app/extend/context.d.ts +0 -68
- package/dist/commonjs/app/extend/context.js +0 -283
- package/dist/commonjs/app/extend/helper.d.ts +0 -12
- package/dist/commonjs/app/extend/helper.js +0 -10
- package/dist/commonjs/app/extend/response.d.ts +0 -41
- package/dist/commonjs/app/extend/response.js +0 -85
- package/dist/commonjs/app/middleware/securities.d.ts +0 -4
- package/dist/commonjs/app/middleware/securities.js +0 -55
- package/dist/commonjs/app.d.ts +0 -6
- package/dist/commonjs/app.js +0 -29
- package/dist/commonjs/config/config.default.d.ts +0 -871
- package/dist/commonjs/config/config.default.js +0 -357
- package/dist/commonjs/config/config.local.d.ts +0 -5
- package/dist/commonjs/config/config.local.js +0 -10
- package/dist/commonjs/index.d.ts +0 -1
- package/dist/commonjs/index.js +0 -4
- package/dist/commonjs/lib/extend/safe_curl.d.ts +0 -16
- package/dist/commonjs/lib/extend/safe_curl.js +0 -28
- package/dist/commonjs/lib/helper/cliFilter.d.ts +0 -4
- package/dist/commonjs/lib/helper/cliFilter.js +0 -20
- package/dist/commonjs/lib/helper/escape.d.ts +0 -2
- package/dist/commonjs/lib/helper/escape.js +0 -8
- package/dist/commonjs/lib/helper/escapeShellArg.d.ts +0 -1
- package/dist/commonjs/lib/helper/escapeShellArg.js +0 -8
- package/dist/commonjs/lib/helper/escapeShellCmd.d.ts +0 -1
- package/dist/commonjs/lib/helper/escapeShellCmd.js +0 -17
- package/dist/commonjs/lib/helper/index.d.ts +0 -21
- package/dist/commonjs/lib/helper/index.js +0 -26
- package/dist/commonjs/lib/helper/shtml.d.ts +0 -2
- package/dist/commonjs/lib/helper/shtml.js +0 -76
- package/dist/commonjs/lib/helper/sjs.d.ts +0 -4
- package/dist/commonjs/lib/helper/sjs.js +0 -52
- package/dist/commonjs/lib/helper/sjson.d.ts +0 -1
- package/dist/commonjs/lib/helper/sjson.js +0 -45
- package/dist/commonjs/lib/helper/spath.d.ts +0 -5
- package/dist/commonjs/lib/helper/spath.js +0 -28
- package/dist/commonjs/lib/helper/surl.d.ts +0 -2
- package/dist/commonjs/lib/helper/surl.js +0 -33
- package/dist/commonjs/lib/middlewares/csp.d.ts +0 -4
- package/dist/commonjs/lib/middlewares/csp.js +0 -68
- package/dist/commonjs/lib/middlewares/csrf.d.ts +0 -4
- package/dist/commonjs/lib/middlewares/csrf.js +0 -42
- package/dist/commonjs/lib/middlewares/dta.d.ts +0 -3
- package/dist/commonjs/lib/middlewares/dta.js +0 -14
- package/dist/commonjs/lib/middlewares/hsts.d.ts +0 -4
- package/dist/commonjs/lib/middlewares/hsts.js +0 -23
- package/dist/commonjs/lib/middlewares/index.d.ts +0 -13
- package/dist/commonjs/lib/middlewares/index.js +0 -28
- package/dist/commonjs/lib/middlewares/methodnoallow.d.ts +0 -3
- package/dist/commonjs/lib/middlewares/methodnoallow.js +0 -22
- package/dist/commonjs/lib/middlewares/noopen.d.ts +0 -4
- package/dist/commonjs/lib/middlewares/noopen.js +0 -17
- package/dist/commonjs/lib/middlewares/nosniff.d.ts +0 -4
- package/dist/commonjs/lib/middlewares/nosniff.js +0 -30
- package/dist/commonjs/lib/middlewares/referrerPolicy.d.ts +0 -4
- package/dist/commonjs/lib/middlewares/referrerPolicy.js +0 -36
- package/dist/commonjs/lib/middlewares/xframe.d.ts +0 -4
- package/dist/commonjs/lib/middlewares/xframe.js +0 -19
- package/dist/commonjs/lib/middlewares/xssProtection.d.ts +0 -4
- package/dist/commonjs/lib/middlewares/xssProtection.js +0 -16
- package/dist/commonjs/lib/utils.d.ts +0 -19
- package/dist/commonjs/lib/utils.js +0 -206
- package/dist/commonjs/package.json +0 -3
- package/dist/commonjs/types.d.ts +0 -10
- package/dist/commonjs/types.js +0 -5
- package/dist/esm/agent.d.ts +0 -6
- package/dist/esm/agent.js +0 -11
- package/dist/esm/app/extend/agent.d.ts +0 -5
- package/dist/esm/app/extend/agent.js +0 -8
- package/dist/esm/app/extend/application.d.ts +0 -16
- package/dist/esm/app/extend/application.js +0 -32
- package/dist/esm/app/extend/context.d.ts +0 -68
- package/dist/esm/app/extend/context.js +0 -244
- package/dist/esm/app/extend/helper.d.ts +0 -12
- package/dist/esm/app/extend/helper.js +0 -5
- package/dist/esm/app/extend/response.d.ts +0 -41
- package/dist/esm/app/extend/response.js +0 -82
- package/dist/esm/app/middleware/securities.d.ts +0 -4
- package/dist/esm/app/middleware/securities.js +0 -50
- package/dist/esm/app.d.ts +0 -6
- package/dist/esm/app.js +0 -26
- package/dist/esm/config/config.default.d.ts +0 -871
- package/dist/esm/config/config.default.js +0 -351
- package/dist/esm/config/config.local.d.ts +0 -5
- package/dist/esm/config/config.local.js +0 -8
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/lib/extend/safe_curl.d.ts +0 -16
- package/dist/esm/lib/extend/safe_curl.js +0 -25
- package/dist/esm/lib/helper/cliFilter.d.ts +0 -4
- package/dist/esm/lib/helper/cliFilter.js +0 -17
- package/dist/esm/lib/helper/escape.d.ts +0 -2
- package/dist/esm/lib/helper/escape.js +0 -3
- package/dist/esm/lib/helper/escapeShellArg.d.ts +0 -1
- package/dist/esm/lib/helper/escapeShellArg.js +0 -5
- package/dist/esm/lib/helper/escapeShellCmd.d.ts +0 -1
- package/dist/esm/lib/helper/escapeShellCmd.js +0 -14
- package/dist/esm/lib/helper/index.d.ts +0 -21
- package/dist/esm/lib/helper/index.js +0 -21
- package/dist/esm/lib/helper/shtml.d.ts +0 -2
- package/dist/esm/lib/helper/shtml.js +0 -70
- package/dist/esm/lib/helper/sjs.d.ts +0 -4
- package/dist/esm/lib/helper/sjs.js +0 -49
- package/dist/esm/lib/helper/sjson.d.ts +0 -1
- package/dist/esm/lib/helper/sjson.js +0 -39
- package/dist/esm/lib/helper/spath.d.ts +0 -5
- package/dist/esm/lib/helper/spath.js +0 -25
- package/dist/esm/lib/helper/surl.d.ts +0 -2
- package/dist/esm/lib/helper/surl.js +0 -30
- package/dist/esm/lib/middlewares/csp.d.ts +0 -4
- package/dist/esm/lib/middlewares/csp.js +0 -63
- package/dist/esm/lib/middlewares/csrf.d.ts +0 -4
- package/dist/esm/lib/middlewares/csrf.js +0 -37
- package/dist/esm/lib/middlewares/dta.d.ts +0 -3
- package/dist/esm/lib/middlewares/dta.js +0 -12
- package/dist/esm/lib/middlewares/hsts.d.ts +0 -4
- package/dist/esm/lib/middlewares/hsts.js +0 -21
- package/dist/esm/lib/middlewares/index.d.ts +0 -13
- package/dist/esm/lib/middlewares/index.js +0 -23
- package/dist/esm/lib/middlewares/methodnoallow.d.ts +0 -3
- package/dist/esm/lib/middlewares/methodnoallow.js +0 -20
- package/dist/esm/lib/middlewares/noopen.d.ts +0 -4
- package/dist/esm/lib/middlewares/noopen.js +0 -15
- package/dist/esm/lib/middlewares/nosniff.d.ts +0 -4
- package/dist/esm/lib/middlewares/nosniff.js +0 -28
- package/dist/esm/lib/middlewares/referrerPolicy.d.ts +0 -4
- package/dist/esm/lib/middlewares/referrerPolicy.js +0 -34
- package/dist/esm/lib/middlewares/xframe.d.ts +0 -4
- package/dist/esm/lib/middlewares/xframe.js +0 -17
- package/dist/esm/lib/middlewares/xssProtection.d.ts +0 -4
- package/dist/esm/lib/middlewares/xssProtection.js +0 -14
- package/dist/esm/lib/utils.d.ts +0 -19
- package/dist/esm/lib/utils.js +0 -194
- package/dist/esm/package.json +0 -3
- package/dist/esm/types.d.ts +0 -10
- package/dist/esm/types.js +0 -3
- package/dist/package.json +0 -4
- package/src/agent.ts +0 -14
- package/src/app/extend/agent.ts +0 -14
- package/src/app/extend/application.ts +0 -51
- package/src/app/extend/context.ts +0 -285
- package/src/app/extend/helper.ts +0 -5
- package/src/app/extend/response.ts +0 -95
- package/src/app/middleware/securities.ts +0 -63
- package/src/app.ts +0 -31
- package/src/config/config.default.ts +0 -379
- package/src/config/config.local.ts +0 -9
- package/src/index.ts +0 -1
- package/src/lib/extend/safe_curl.ts +0 -35
- package/src/lib/helper/cliFilter.ts +0 -20
- package/src/lib/helper/escape.ts +0 -3
- package/src/lib/helper/escapeShellArg.ts +0 -4
- package/src/lib/helper/escapeShellCmd.ts +0 -16
- package/src/lib/helper/index.ts +0 -21
- package/src/lib/helper/shtml.ts +0 -77
- package/src/lib/helper/sjs.ts +0 -57
- package/src/lib/helper/sjson.ts +0 -35
- package/src/lib/helper/spath.ts +0 -27
- package/src/lib/helper/surl.ts +0 -35
- package/src/lib/middlewares/csp.ts +0 -70
- package/src/lib/middlewares/csrf.ts +0 -44
- package/src/lib/middlewares/dta.ts +0 -13
- package/src/lib/middlewares/hsts.ts +0 -24
- package/src/lib/middlewares/index.ts +0 -23
- package/src/lib/middlewares/methodnoallow.ts +0 -23
- package/src/lib/middlewares/noopen.ts +0 -18
- package/src/lib/middlewares/nosniff.ts +0 -32
- package/src/lib/middlewares/referrerPolicy.ts +0 -39
- package/src/lib/middlewares/xframe.ts +0 -20
- package/src/lib/middlewares/xssProtection.ts +0 -17
- package/src/lib/utils.ts +0 -208
- package/src/types.ts +0 -16
- package/src/typings/index.d.ts +0 -4
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.default = shtml;
|
|
7
|
-
const xss_1 = __importDefault(require("xss"));
|
|
8
|
-
const utils_js_1 = require("../utils.js");
|
|
9
|
-
const BUILD_IN_ON_TAG_ATTR = Symbol('buildInOnTagAttr');
|
|
10
|
-
// default rule: https://github.com/leizongmin/js-xss/blob/master/lib/default.js
|
|
11
|
-
// add domain filter based on xss module
|
|
12
|
-
// custom options http://jsxss.com/zh/options.html
|
|
13
|
-
// eg: support a tag,filter attributes except for title : whiteList: {a: ['title']}
|
|
14
|
-
function shtml(val) {
|
|
15
|
-
if (typeof val !== 'string') {
|
|
16
|
-
return val;
|
|
17
|
-
}
|
|
18
|
-
const securityOptions = this.ctx.securityOptions;
|
|
19
|
-
let buildInOnTagAttrHandler;
|
|
20
|
-
const shtmlConfig = {
|
|
21
|
-
...this.app.config.helper.shtml,
|
|
22
|
-
...securityOptions.shtml,
|
|
23
|
-
[BUILD_IN_ON_TAG_ATTR]: buildInOnTagAttrHandler,
|
|
24
|
-
};
|
|
25
|
-
const domainWhiteList = this.app.config.security.domainWhiteList;
|
|
26
|
-
const app = this.app;
|
|
27
|
-
// filter href and src attribute if not in domain white list
|
|
28
|
-
if (!shtmlConfig[BUILD_IN_ON_TAG_ATTR]) {
|
|
29
|
-
shtmlConfig[BUILD_IN_ON_TAG_ATTR] = (_tag, name, value, isWhiteAttr) => {
|
|
30
|
-
if (isWhiteAttr && (name === 'href' || name === 'src')) {
|
|
31
|
-
if (!value) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
value = String(value);
|
|
35
|
-
if (value[0] === '/' || value[0] === '#') {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const hostname = (0, utils_js_1.getFromUrl)(value, 'hostname');
|
|
39
|
-
if (!hostname) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
// If we don't have our hostname in the app.security.domainWhiteList,
|
|
43
|
-
// Just check for `shtmlConfig.domainWhiteList` and `ctx.whiteList`.
|
|
44
|
-
if (!(0, utils_js_1.isSafeDomain)(hostname, domainWhiteList)) {
|
|
45
|
-
// Check for `shtmlConfig.domainWhiteList` first (duplicated now)
|
|
46
|
-
if (shtmlConfig.domainWhiteList && shtmlConfig.domainWhiteList.length > 0) {
|
|
47
|
-
app.deprecate('[@eggjs/security/lib/helper/shtml] `config.helper.shtml.domainWhiteList` has been deprecate. Please use `config.security.domainWhiteList` instead.');
|
|
48
|
-
if (!(0, utils_js_1.isSafeDomain)(hostname, shtmlConfig.domainWhiteList)) {
|
|
49
|
-
return '';
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
return '';
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
// avoid overriding user configuration 'onTagAttr'
|
|
59
|
-
if (shtmlConfig.onTagAttr) {
|
|
60
|
-
const customOnTagAttrHandler = shtmlConfig.onTagAttr;
|
|
61
|
-
shtmlConfig.onTagAttr = function (tag, name, value, isWhiteAttr) {
|
|
62
|
-
const result = customOnTagAttrHandler.apply(this, [tag, name, value, isWhiteAttr]);
|
|
63
|
-
if (result !== undefined) {
|
|
64
|
-
return result;
|
|
65
|
-
}
|
|
66
|
-
// fallback to build-in handler
|
|
67
|
-
return shtmlConfig[BUILD_IN_ON_TAG_ATTR].apply(this, [tag, name, value, isWhiteAttr]);
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
shtmlConfig.onTagAttr = shtmlConfig[BUILD_IN_ON_TAG_ATTR];
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return (0, xss_1.default)(val, shtmlConfig);
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2h0bWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2hlbHBlci9zaHRtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVdBLHdCQWlFQztBQTNFRCw4Q0FBc0I7QUFDdEIsMENBQXVEO0FBR3ZELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFeEQsZ0ZBQWdGO0FBQ2hGLHdDQUF3QztBQUN4QyxrREFBa0Q7QUFDbEQsbUZBQW1GO0FBQ25GLFNBQXdCLEtBQUssQ0FBeUIsR0FBVztJQUMvRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO0lBQ2pELElBQUksdUJBQW1FLENBQUM7SUFDeEUsTUFBTSxXQUFXLEdBQUc7UUFDbEIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSztRQUMvQixHQUFHLGVBQWUsQ0FBQyxLQUFLO1FBQ3hCLENBQUMsb0JBQW9CLENBQUMsRUFBRSx1QkFBdUI7S0FDaEQsQ0FBQztJQUNGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7SUFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNyQiw0REFBNEQ7SUFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFDdkMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRTtZQUNyRSxJQUFJLFdBQVcsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDWCxPQUFPO2dCQUNULENBQUM7Z0JBRUQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDekMsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0sUUFBUSxHQUFHLElBQUEscUJBQVUsRUFBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDZCxPQUFPO2dCQUNULENBQUM7Z0JBRUQscUVBQXFFO2dCQUNyRSxvRUFBb0U7Z0JBQ3BFLElBQUksQ0FBQyxJQUFBLHVCQUFZLEVBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQzdDLGlFQUFpRTtvQkFDakUsSUFBSSxXQUFXLENBQUMsZUFBZSxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMxRSxHQUFHLENBQUMsU0FBUyxDQUFDLG9KQUFvSixDQUFDLENBQUM7d0JBQ3BLLElBQUksQ0FBQyxJQUFBLHVCQUFZLEVBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDOzRCQUN6RCxPQUFPLEVBQUUsQ0FBQzt3QkFDWixDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLEVBQUUsQ0FBQztvQkFDWixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsa0RBQWtEO1FBQ2xELElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sc0JBQXNCLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUNyRCxXQUFXLENBQUMsU0FBUyxHQUFHLFVBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDNUQsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBRSxDQUFDLENBQUM7Z0JBQ3JGLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN6QixPQUFPLE1BQU0sQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCwrQkFBK0I7Z0JBQy9CLE9BQU8sV0FBVyxDQUFDLG9CQUFvQixDQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBRSxDQUFDLENBQUM7WUFDM0YsQ0FBQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixXQUFXLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFBLGFBQUcsRUFBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDL0IsQ0FBQyJ9
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Escape JavaScript to \xHH format
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.default = escapeJavaScript;
|
|
7
|
-
// escape \x00-\x7f
|
|
8
|
-
// except 0-9,A-Z,a-z(\x2f-\x3a \x40-\x5b \x60-\x7b)
|
|
9
|
-
// eslint-disable-next-line
|
|
10
|
-
const MATCH_VULNERABLE_REGEXP = /[\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]/;
|
|
11
|
-
// eslint-enable-next-line
|
|
12
|
-
const BASIC_ALPHABETS = new Set('abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''));
|
|
13
|
-
const map = {
|
|
14
|
-
'\t': '\\t',
|
|
15
|
-
'\n': '\\n',
|
|
16
|
-
'\r': '\\r',
|
|
17
|
-
};
|
|
18
|
-
function escapeJavaScript(text) {
|
|
19
|
-
const str = '' + text;
|
|
20
|
-
const match = MATCH_VULNERABLE_REGEXP.exec(str);
|
|
21
|
-
if (!match) {
|
|
22
|
-
return str;
|
|
23
|
-
}
|
|
24
|
-
let res = '';
|
|
25
|
-
let index = 0;
|
|
26
|
-
let lastIndex = 0;
|
|
27
|
-
let ascii;
|
|
28
|
-
for (index = match.index; index < str.length; index++) {
|
|
29
|
-
ascii = str[index];
|
|
30
|
-
if (BASIC_ALPHABETS.has(ascii)) {
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
if (map[ascii] === undefined) {
|
|
35
|
-
const code = ascii.charCodeAt(0);
|
|
36
|
-
if (code > 127) {
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
map[ascii] = '\\x' + code.toString(16);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
if (lastIndex !== index) {
|
|
45
|
-
res += str.substring(lastIndex, index);
|
|
46
|
-
}
|
|
47
|
-
lastIndex = index + 1;
|
|
48
|
-
res += map[ascii];
|
|
49
|
-
}
|
|
50
|
-
return lastIndex !== index ? res + str.substring(lastIndex, index) : res;
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2pzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9oZWxwZXIvc2pzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFpQkgsbUNBcUNDO0FBcERELG1CQUFtQjtBQUNuQixvREFBb0Q7QUFFcEQsMkJBQTJCO0FBQzNCLE1BQU0sdUJBQXVCLEdBQUcsd0NBQXdDLENBQUM7QUFDekUsMEJBQTBCO0FBRTFCLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLGdFQUFnRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRTVHLE1BQU0sR0FBRyxHQUEyQjtJQUNsQyxJQUFJLEVBQUUsS0FBSztJQUNYLElBQUksRUFBRSxLQUFLO0lBQ1gsSUFBSSxFQUFFLEtBQUs7Q0FDWixDQUFDO0FBRUYsU0FBd0IsZ0JBQWdCLENBQUMsSUFBWTtJQUNuRCxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLE1BQU0sS0FBSyxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVoRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDYixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDbEIsSUFBSSxLQUFLLENBQUM7SUFFVixLQUFLLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDdEQsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQixTQUFTO1FBQ1gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ2YsU0FBUztnQkFDWCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN4QixHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELFNBQVMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDM0UsQ0FBQyJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function jsonEscape(obj: any): string;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.default = jsonEscape;
|
|
7
|
-
const sjs_js_1 = __importDefault(require("./sjs.js"));
|
|
8
|
-
/**
|
|
9
|
-
* escape json
|
|
10
|
-
* for output json in script
|
|
11
|
-
*/
|
|
12
|
-
function sanitizeKey(obj) {
|
|
13
|
-
if (typeof obj !== 'object')
|
|
14
|
-
return obj;
|
|
15
|
-
if (Array.isArray(obj))
|
|
16
|
-
return obj;
|
|
17
|
-
if (obj === null)
|
|
18
|
-
return null;
|
|
19
|
-
if (typeof obj === 'boolean')
|
|
20
|
-
return obj;
|
|
21
|
-
if (typeof obj === 'number')
|
|
22
|
-
return obj;
|
|
23
|
-
if (Buffer.isBuffer(obj))
|
|
24
|
-
return obj.toString();
|
|
25
|
-
for (const k in obj) {
|
|
26
|
-
const escapedK = (0, sjs_js_1.default)(k);
|
|
27
|
-
if (escapedK !== k) {
|
|
28
|
-
obj[escapedK] = sanitizeKey(obj[k]);
|
|
29
|
-
obj[k] = undefined;
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
obj[k] = sanitizeKey(obj[k]);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return obj;
|
|
36
|
-
}
|
|
37
|
-
function jsonEscape(obj) {
|
|
38
|
-
return JSON.stringify(sanitizeKey(obj), (_k, v) => {
|
|
39
|
-
if (typeof v === 'string') {
|
|
40
|
-
return (0, sjs_js_1.default)(v);
|
|
41
|
-
}
|
|
42
|
-
return v;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2pzb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2hlbHBlci9zanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTJCQSw2QkFPQztBQWxDRCxzREFBMkI7QUFFM0I7OztHQUdHO0FBRUgsU0FBUyxXQUFXLENBQUMsR0FBUTtJQUMzQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUN4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDbkMsSUFBSSxHQUFHLEtBQUssSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlCLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3pDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3hDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUVoRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sUUFBUSxHQUFHLElBQUEsZ0JBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBd0IsVUFBVSxDQUFDLEdBQVE7SUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNoRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBQSxnQkFBRyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* File Inclusion
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.default = pathFilter;
|
|
7
|
-
function pathFilter(path) {
|
|
8
|
-
if (typeof path !== 'string')
|
|
9
|
-
return path;
|
|
10
|
-
const pathSource = path;
|
|
11
|
-
while (path.indexOf('%') !== -1) {
|
|
12
|
-
try {
|
|
13
|
-
path = decodeURIComponent(path);
|
|
14
|
-
}
|
|
15
|
-
catch (e) {
|
|
16
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
17
|
-
// Not a PROD env, logging with a warning.
|
|
18
|
-
this.ctx.coreLogger.warn('[@eggjs/security/lib/helper/spath] : decode file path %j failed.', path);
|
|
19
|
-
}
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
if (path.indexOf('..') !== -1 || path[0] === '/') {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
return pathSource;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2hlbHBlci9zcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7O0FBSUgsNkJBb0JDO0FBcEJELFNBQXdCLFVBQVUsQ0FBeUIsSUFBWTtJQUNyRSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQztJQUUxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFFeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDMUMsMENBQTBDO2dCQUMxQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckcsQ0FBQztZQUNELE1BQU07UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyJ9
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = surl;
|
|
4
|
-
const escapeMap = {
|
|
5
|
-
'"': '"',
|
|
6
|
-
'<': '<',
|
|
7
|
-
'>': '>',
|
|
8
|
-
'\'': ''',
|
|
9
|
-
};
|
|
10
|
-
function surl(val) {
|
|
11
|
-
// Just get the converted the protocolWhiteList in `Set` mode,
|
|
12
|
-
// Avoid conversions in `foreach`
|
|
13
|
-
const protocolWhiteListSet = this.app.config.security.__protocolWhiteListSet;
|
|
14
|
-
if (typeof val !== 'string') {
|
|
15
|
-
return val;
|
|
16
|
-
}
|
|
17
|
-
// only test on absolute path
|
|
18
|
-
if (val[0] !== '/') {
|
|
19
|
-
const arr = val.split('://', 2);
|
|
20
|
-
const protocol = arr.length > 1 ? arr[0].toLowerCase() : '';
|
|
21
|
-
if (protocol === '' || !protocolWhiteListSet.has(protocol)) {
|
|
22
|
-
if (this.app.config.env === 'local') {
|
|
23
|
-
this.ctx.coreLogger.warn('[@eggjs/security/surl] url: %j, protocol: %j, ' +
|
|
24
|
-
'protocol is empty or not in white list, convert to empty string', val, protocol);
|
|
25
|
-
}
|
|
26
|
-
return '';
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return val.replace(/["'<>]/g, ch => {
|
|
30
|
-
return escapeMap[ch];
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvaGVscGVyL3N1cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSx1QkF5QkM7QUFoQ0QsTUFBTSxTQUFTLEdBQTJCO0lBQ3hDLEdBQUcsRUFBRSxRQUFRO0lBQ2IsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsTUFBTTtJQUNYLElBQUksRUFBRSxRQUFRO0NBQ2YsQ0FBQztBQUVGLFNBQXdCLElBQUksQ0FBeUIsR0FBVztJQUM5RCw4REFBOEQ7SUFDOUQsaUNBQWlDO0lBQ2pDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHNCQUF1QixDQUFDO0lBRTlFLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1RCxJQUFJLFFBQVEsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdEQUFnRDtvQkFDdkUsaUVBQWlFLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RGLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNqQyxPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const extend_1 = __importDefault(require("extend"));
|
|
7
|
-
const utils_js_1 = require("../utils.js");
|
|
8
|
-
const HEADER = [
|
|
9
|
-
'x-content-security-policy',
|
|
10
|
-
'content-security-policy',
|
|
11
|
-
];
|
|
12
|
-
const REPORT_ONLY_HEADER = [
|
|
13
|
-
'x-content-security-policy-report-only',
|
|
14
|
-
'content-security-policy-report-only',
|
|
15
|
-
];
|
|
16
|
-
// Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
|
|
17
|
-
const MSIE_REGEXP = / MSIE /i;
|
|
18
|
-
exports.default = (options) => {
|
|
19
|
-
return async function csp(ctx, next) {
|
|
20
|
-
await next();
|
|
21
|
-
const opts = {
|
|
22
|
-
...options,
|
|
23
|
-
...ctx.securityOptions.csp,
|
|
24
|
-
};
|
|
25
|
-
if ((0, utils_js_1.checkIfIgnore)(opts, ctx))
|
|
26
|
-
return;
|
|
27
|
-
let finalHeader;
|
|
28
|
-
const matchedOption = (0, extend_1.default)(true, {}, opts.policy);
|
|
29
|
-
const bufArray = [];
|
|
30
|
-
const headers = opts.reportOnly ? REPORT_ONLY_HEADER : HEADER;
|
|
31
|
-
if (opts.supportIE && MSIE_REGEXP.test(ctx.get('user-agent'))) {
|
|
32
|
-
finalHeader = headers[0];
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
finalHeader = headers[1];
|
|
36
|
-
}
|
|
37
|
-
for (const key in matchedOption) {
|
|
38
|
-
const value = matchedOption[key];
|
|
39
|
-
// Other arrays are splitted into strings EXCEPT `sandbox`
|
|
40
|
-
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/sandbox
|
|
41
|
-
if (key === 'sandbox' && value === true) {
|
|
42
|
-
bufArray.push(key);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
let values = (Array.isArray(value) ? value : [value]);
|
|
46
|
-
if (key === 'script-src') {
|
|
47
|
-
const hasNonce = values.some(function (val) {
|
|
48
|
-
return val.indexOf('nonce-') !== -1;
|
|
49
|
-
});
|
|
50
|
-
if (!hasNonce) {
|
|
51
|
-
values.push('\'nonce-' + ctx.nonce + '\'');
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
values = values.map(function (d) {
|
|
55
|
-
if (d.startsWith('.')) {
|
|
56
|
-
d = '*' + d;
|
|
57
|
-
}
|
|
58
|
-
return d;
|
|
59
|
-
});
|
|
60
|
-
bufArray.push(key + ' ' + values.join(' '));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const headerString = bufArray.join(';');
|
|
64
|
-
ctx.set(finalHeader, headerString);
|
|
65
|
-
ctx.set('x-csp-nonce', ctx.nonce);
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9taWRkbGV3YXJlcy9jc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsMENBQTRDO0FBRzVDLE1BQU0sTUFBTSxHQUFHO0lBQ2IsMkJBQTJCO0lBQzNCLHlCQUF5QjtDQUMxQixDQUFDO0FBQ0YsTUFBTSxrQkFBa0IsR0FBRztJQUN6Qix1Q0FBdUM7SUFDdkMscUNBQXFDO0NBQ3RDLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBRTlCLGtCQUFlLENBQUMsT0FBOEIsRUFBRSxFQUFFO0lBQ2hELE9BQU8sS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFZLEVBQUUsSUFBVTtRQUNoRCxNQUFNLElBQUksRUFBRSxDQUFDO1FBRWIsTUFBTSxJQUFJLEdBQUc7WUFDWCxHQUFHLE9BQU87WUFDVixHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRztTQUMzQixDQUFDO1FBQ0YsSUFBSSxJQUFBLHdCQUFhLEVBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztZQUFFLE9BQU87UUFFckMsSUFBSSxXQUFXLENBQUM7UUFDaEIsTUFBTSxhQUFhLEdBQUcsSUFBQSxnQkFBTSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlELFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTixXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQywwREFBMEQ7WUFDMUQsNEZBQTRGO1lBQzVGLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQUssQ0FBRSxDQUFhLENBQUM7Z0JBQ3BFLElBQUksR0FBRyxLQUFLLFlBQVksRUFBRSxDQUFDO29CQUN6QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVMsR0FBRzt3QkFDdkMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN0QyxDQUFDLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFDN0MsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVMsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3RCLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO29CQUNkLENBQUM7b0JBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_util_1 = require("node:util");
|
|
7
|
-
const type_is_1 = __importDefault(require("type-is"));
|
|
8
|
-
const utils_js_1 = require("../utils.js");
|
|
9
|
-
const debug = (0, node_util_1.debuglog)('@eggjs/security/lib/middlewares/csrf');
|
|
10
|
-
exports.default = (options) => {
|
|
11
|
-
return function csrf(ctx, next) {
|
|
12
|
-
if ((0, utils_js_1.checkIfIgnore)(options, ctx)) {
|
|
13
|
-
return next();
|
|
14
|
-
}
|
|
15
|
-
// ensure csrf token exists
|
|
16
|
-
if (['any', 'all', 'ctoken'].includes(options.type)) {
|
|
17
|
-
ctx.ensureCsrfSecret();
|
|
18
|
-
}
|
|
19
|
-
// supported requests
|
|
20
|
-
const method = ctx.method;
|
|
21
|
-
let isSupported = false;
|
|
22
|
-
for (const eachRule of options.supportedRequests) {
|
|
23
|
-
if (eachRule.path.test(ctx.path)) {
|
|
24
|
-
if (eachRule.methods.includes(method)) {
|
|
25
|
-
isSupported = true;
|
|
26
|
-
break;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if (!isSupported) {
|
|
31
|
-
return next();
|
|
32
|
-
}
|
|
33
|
-
if (options.ignoreJSON && type_is_1.default.is(ctx.get('content-type'), 'json')) {
|
|
34
|
-
return next();
|
|
35
|
-
}
|
|
36
|
-
const body = ctx.request.body;
|
|
37
|
-
debug('%s %s, got %j', ctx.method, ctx.url, body);
|
|
38
|
-
ctx.assertCsrf();
|
|
39
|
-
return next();
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NyZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWlkZGxld2FyZXMvY3NyZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQUFxQztBQUVyQyxzREFBNkI7QUFDN0IsMENBQTRDO0FBRzVDLE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRS9ELGtCQUFlLENBQUMsT0FBK0IsRUFBRSxFQUFFO0lBQ2pELE9BQU8sU0FBUyxJQUFJLENBQUMsR0FBWSxFQUFFLElBQVU7UUFDM0MsSUFBSSxJQUFBLHdCQUFhLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksQ0FBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0RCxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBRUQscUJBQXFCO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLEtBQUssTUFBTSxRQUFRLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDakQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUN0QyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUNuQixNQUFNO2dCQUNSLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksaUJBQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_js_1 = require("../utils.js");
|
|
4
|
-
// https://en.wikipedia.org/wiki/Directory_traversal_attack
|
|
5
|
-
exports.default = () => {
|
|
6
|
-
return function dta(ctx, next) {
|
|
7
|
-
const path = ctx.path;
|
|
8
|
-
if (!(0, utils_js_1.isSafePath)(path, ctx)) {
|
|
9
|
-
ctx.throw(400);
|
|
10
|
-
}
|
|
11
|
-
return next();
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9taWRkbGV3YXJlcy9kdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwwQ0FBeUM7QUFFekMsMkRBQTJEO0FBQzNELGtCQUFlLEdBQUcsRUFBRTtJQUNsQixPQUFPLFNBQVMsR0FBRyxDQUFDLEdBQVksRUFBRSxJQUFVO1FBQzFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUEscUJBQVUsRUFBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_js_1 = require("../utils.js");
|
|
4
|
-
// Set Strict-Transport-Security header
|
|
5
|
-
exports.default = (options) => {
|
|
6
|
-
return async function hsts(ctx, next) {
|
|
7
|
-
await next();
|
|
8
|
-
const opts = {
|
|
9
|
-
...options,
|
|
10
|
-
...ctx.securityOptions.hsts,
|
|
11
|
-
};
|
|
12
|
-
if ((0, utils_js_1.checkIfIgnore)(opts, ctx))
|
|
13
|
-
return;
|
|
14
|
-
let val = 'max-age=' + opts.maxAge;
|
|
15
|
-
// If opts.includeSubdomains is defined,
|
|
16
|
-
// the rule is also valid for all the sub domains of the website
|
|
17
|
-
if (opts.includeSubdomains) {
|
|
18
|
-
val += '; includeSubdomains';
|
|
19
|
-
}
|
|
20
|
-
ctx.set('strict-transport-security', val);
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWlkZGxld2FyZXMvaHN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDBDQUE0QztBQUc1Qyx1Q0FBdUM7QUFDdkMsa0JBQWUsQ0FBQyxPQUErQixFQUFFLEVBQUU7SUFDakQsT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQVksRUFBRSxJQUFVO1FBQ2pELE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFYixNQUFNLElBQUksR0FBRztZQUNYLEdBQUcsT0FBTztZQUNWLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJO1NBQzVCLENBQUM7UUFDRixJQUFJLElBQUEsd0JBQWEsRUFBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTztRQUVyQyxJQUFJLEdBQUcsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQyx3Q0FBd0M7UUFDeEMsZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsR0FBRyxJQUFJLHFCQUFxQixDQUFDO1FBQy9CLENBQUM7UUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
csp: (options: import("../../types.js").SecurityConfig["csp"]) => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
3
|
-
csrf: (options: import("../../types.js").SecurityConfig["csrf"]) => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
4
|
-
dta: () => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
5
|
-
hsts: (options: import("../../types.js").SecurityConfig["hsts"]) => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
6
|
-
methodnoallow: () => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
7
|
-
noopen: (options: import("../../types.js").SecurityConfig["noopen"]) => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
8
|
-
nosniff: (options: import("../../types.js").SecurityConfig["nosniff"]) => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
9
|
-
referrerPolicy: (options: import("../../types.js").SecurityConfig["referrerPolicy"]) => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
10
|
-
xframe: (options: import("../../types.js").SecurityConfig["xframe"]) => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
11
|
-
xssProtection: (options: import("../../types.js").SecurityConfig["xssProtection"]) => (ctx: import("@eggjs/core").Context, next: import("egg").Next) => Promise<void>;
|
|
12
|
-
};
|
|
13
|
-
export default _default;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const csp_js_1 = __importDefault(require("./csp.js"));
|
|
7
|
-
const csrf_js_1 = __importDefault(require("./csrf.js"));
|
|
8
|
-
const dta_js_1 = __importDefault(require("./dta.js"));
|
|
9
|
-
const hsts_js_1 = __importDefault(require("./hsts.js"));
|
|
10
|
-
const methodnoallow_js_1 = __importDefault(require("./methodnoallow.js"));
|
|
11
|
-
const noopen_js_1 = __importDefault(require("./noopen.js"));
|
|
12
|
-
const nosniff_js_1 = __importDefault(require("./nosniff.js"));
|
|
13
|
-
const referrerPolicy_js_1 = __importDefault(require("./referrerPolicy.js"));
|
|
14
|
-
const xframe_js_1 = __importDefault(require("./xframe.js"));
|
|
15
|
-
const xssProtection_js_1 = __importDefault(require("./xssProtection.js"));
|
|
16
|
-
exports.default = {
|
|
17
|
-
csp: csp_js_1.default,
|
|
18
|
-
csrf: csrf_js_1.default,
|
|
19
|
-
dta: dta_js_1.default,
|
|
20
|
-
hsts: hsts_js_1.default,
|
|
21
|
-
methodnoallow: methodnoallow_js_1.default,
|
|
22
|
-
noopen: noopen_js_1.default,
|
|
23
|
-
nosniff: nosniff_js_1.default,
|
|
24
|
-
referrerPolicy: referrerPolicy_js_1.default,
|
|
25
|
-
xframe: xframe_js_1.default,
|
|
26
|
-
xssProtection: xssProtection_js_1.default,
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21pZGRsZXdhcmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQTJCO0FBQzNCLHdEQUE2QjtBQUM3QixzREFBMkI7QUFDM0Isd0RBQTZCO0FBQzdCLDBFQUErQztBQUMvQyw0REFBaUM7QUFDakMsOERBQW1DO0FBQ25DLDRFQUFpRDtBQUNqRCw0REFBaUM7QUFDakMsMEVBQStDO0FBRS9DLGtCQUFlO0lBQ2IsR0FBRyxFQUFILGdCQUFHO0lBQ0gsSUFBSSxFQUFKLGlCQUFJO0lBQ0osR0FBRyxFQUFILGdCQUFHO0lBQ0gsSUFBSSxFQUFKLGlCQUFJO0lBQ0osYUFBYSxFQUFiLDBCQUFhO0lBQ2IsTUFBTSxFQUFOLG1CQUFNO0lBQ04sT0FBTyxFQUFQLG9CQUFPO0lBQ1AsY0FBYyxFQUFkLDJCQUFjO0lBQ2QsTUFBTSxFQUFOLG1CQUFNO0lBQ04sYUFBYSxFQUFiLDBCQUFhO0NBQ2QsQ0FBQyJ9
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const node_http_1 = require("node:http");
|
|
4
|
-
const METHODS_NOT_ALLOWED = ['TRACE', 'TRACK'];
|
|
5
|
-
const safeHttpMethodsMap = {};
|
|
6
|
-
for (const method of node_http_1.METHODS) {
|
|
7
|
-
if (!METHODS_NOT_ALLOWED.includes(method)) {
|
|
8
|
-
safeHttpMethodsMap[method.toUpperCase()] = true;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
// https://www.owasp.org/index.php/Cross_Site_Tracing
|
|
12
|
-
// http://jsperf.com/find-by-map-with-find-by-array
|
|
13
|
-
exports.default = () => {
|
|
14
|
-
return function notAllow(ctx, next) {
|
|
15
|
-
// ctx.method is upper case
|
|
16
|
-
if (!safeHttpMethodsMap[ctx.method]) {
|
|
17
|
-
ctx.throw(405);
|
|
18
|
-
}
|
|
19
|
-
return next();
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0aG9kbm9hbGxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWlkZGxld2FyZXMvbWV0aG9kbm9hbGxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFvQztBQUdwQyxNQUFNLG1CQUFtQixHQUFHLENBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBRSxDQUFDO0FBQ2pELE1BQU0sa0JBQWtCLEdBQTRCLEVBQUUsQ0FBQztBQUV2RCxLQUFLLE1BQU0sTUFBTSxJQUFJLG1CQUFPLEVBQUUsQ0FBQztJQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2xELENBQUM7QUFDSCxDQUFDO0FBRUQscURBQXFEO0FBQ3JELG1EQUFtRDtBQUNuRCxrQkFBZSxHQUFHLEVBQUU7SUFDbEIsT0FBTyxTQUFTLFFBQVEsQ0FBQyxHQUFZLEVBQUUsSUFBVTtRQUMvQywyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_js_1 = require("../utils.js");
|
|
4
|
-
// @see http://blogs.msdn.com/b/ieinternals/archive/2009/06/30/internet-explorer-custom-http-headers.aspx
|
|
5
|
-
exports.default = (options) => {
|
|
6
|
-
return async function noopen(ctx, next) {
|
|
7
|
-
await next();
|
|
8
|
-
const opts = {
|
|
9
|
-
...options,
|
|
10
|
-
...ctx.securityOptions.noopen,
|
|
11
|
-
};
|
|
12
|
-
if ((0, utils_js_1.checkIfIgnore)(opts, ctx))
|
|
13
|
-
return;
|
|
14
|
-
ctx.set('x-download-options', 'noopen');
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcGVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9taWRkbGV3YXJlcy9ub29wZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwwQ0FBNEM7QUFHNUMseUdBQXlHO0FBQ3pHLGtCQUFlLENBQUMsT0FBaUMsRUFBRSxFQUFFO0lBQ25ELE9BQU8sS0FBSyxVQUFVLE1BQU0sQ0FBQyxHQUFZLEVBQUUsSUFBVTtRQUNuRCxNQUFNLElBQUksRUFBRSxDQUFDO1FBRWIsTUFBTSxJQUFJLEdBQUc7WUFDWCxHQUFHLE9BQU87WUFDVixHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTTtTQUM5QixDQUFDO1FBQ0YsSUFBSSxJQUFBLHdCQUFhLEVBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztZQUFFLE9BQU87UUFFckMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMifQ==
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_js_1 = require("../utils.js");
|
|
4
|
-
// status codes for redirects
|
|
5
|
-
// @see https://github.com/jshttp/statuses/blob/master/index.js#L33
|
|
6
|
-
const RedirectStatus = {
|
|
7
|
-
300: true,
|
|
8
|
-
301: true,
|
|
9
|
-
302: true,
|
|
10
|
-
303: true,
|
|
11
|
-
305: true,
|
|
12
|
-
307: true,
|
|
13
|
-
308: true,
|
|
14
|
-
};
|
|
15
|
-
exports.default = (options) => {
|
|
16
|
-
return async function nosniff(ctx, next) {
|
|
17
|
-
await next();
|
|
18
|
-
// ignore redirect response
|
|
19
|
-
if (RedirectStatus[ctx.status])
|
|
20
|
-
return;
|
|
21
|
-
const opts = {
|
|
22
|
-
...options,
|
|
23
|
-
...ctx.securityOptions.nosniff,
|
|
24
|
-
};
|
|
25
|
-
if ((0, utils_js_1.checkIfIgnore)(opts, ctx))
|
|
26
|
-
return;
|
|
27
|
-
ctx.set('x-content-type-options', 'nosniff');
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9zbmlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWlkZGxld2FyZXMvbm9zbmlmZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDBDQUE0QztBQUc1Qyw2QkFBNkI7QUFDN0IsbUVBQW1FO0FBQ25FLE1BQU0sY0FBYyxHQUE0QjtJQUM5QyxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtDQUNWLENBQUM7QUFFRixrQkFBZSxDQUFDLE9BQWtDLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssVUFBVSxPQUFPLENBQUMsR0FBWSxFQUFFLElBQVU7UUFDcEQsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUViLDJCQUEyQjtRQUMzQixJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTztRQUV2QyxNQUFNLElBQUksR0FBRztZQUNYLEdBQUcsT0FBTztZQUNWLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPO1NBQy9CLENBQUM7UUFDRixJQUFJLElBQUEsd0JBQWEsRUFBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTztRQUVyQyxHQUFHLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|