@eggjs/security 5.0.0-beta.19 → 5.0.0-beta.20

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.
Files changed (106) hide show
  1. package/dist/agent.js +1 -1
  2. package/dist/app/extend/agent.d.ts +2 -1
  3. package/dist/app/extend/agent.js +1 -1
  4. package/dist/app/extend/application.d.ts +3 -11
  5. package/dist/app/extend/application.js +2 -30
  6. package/dist/app/extend/context.d.ts +3 -60
  7. package/dist/app/extend/context.js +2 -189
  8. package/dist/app/extend/helper.d.ts +8 -8
  9. package/dist/app/extend/helper.js +11 -1
  10. package/dist/app/extend/response.d.ts +3 -38
  11. package/dist/app/extend/response.js +3 -68
  12. package/dist/app/middleware/securities.js +12 -1
  13. package/dist/app.js +2 -2
  14. package/dist/application-COC0mYEe.js +32 -0
  15. package/dist/application-n5bk2L_z.d.ts +12 -0
  16. package/dist/cliFilter-7BSD8Nc_.js +18 -0
  17. package/dist/cliFilter-DKZxCxSe.d.ts +7 -0
  18. package/dist/config/config.default.d.ts +1 -869
  19. package/dist/config/config.default.js +1 -164
  20. package/dist/config.default-AcwQOAG0.js +166 -0
  21. package/dist/config.default-D8v08Vox.d.ts +870 -0
  22. package/dist/context-C-N1IY85.d.ts +95 -0
  23. package/dist/context-e-QJTKfq.js +191 -0
  24. package/dist/csp-BW5AJd_f.js +46 -0
  25. package/dist/csrf-9aSLHiby.js +33 -0
  26. package/dist/dta-DVAKEpJ3.js +13 -0
  27. package/dist/escape-Dex_Pk9e.d.ts +2 -0
  28. package/dist/escape-p8-cW8c_.js +7 -0
  29. package/dist/escapeShellArg-BnzDicAC.d.ts +4 -0
  30. package/dist/escapeShellArg-C0v1ZeCl.js +7 -0
  31. package/dist/escapeShellCmd-CkAdyhtO.js +15 -0
  32. package/dist/escapeShellCmd-DQZZIHde.d.ts +4 -0
  33. package/dist/helper-DylzfQ_5.js +25 -0
  34. package/dist/hsts-CWMKNTEh.js +19 -0
  35. package/dist/index.d.ts +5 -1
  36. package/dist/index.js +6 -3
  37. package/dist/lib/extend/safe_curl.d.ts +2 -19
  38. package/dist/lib/extend/safe_curl.js +1 -17
  39. package/dist/lib/helper/cliFilter.d.ts +1 -6
  40. package/dist/lib/helper/cliFilter.js +1 -16
  41. package/dist/lib/helper/escape.d.ts +1 -1
  42. package/dist/lib/helper/escape.js +1 -5
  43. package/dist/lib/helper/escapeShellArg.d.ts +1 -3
  44. package/dist/lib/helper/escapeShellArg.js +1 -5
  45. package/dist/lib/helper/escapeShellCmd.d.ts +1 -3
  46. package/dist/lib/helper/escapeShellCmd.js +1 -13
  47. package/dist/lib/helper/index.d.ts +9 -9
  48. package/dist/lib/helper/index.js +11 -23
  49. package/dist/lib/helper/shtml.d.ts +1 -5
  50. package/dist/lib/helper/shtml.js +2 -51
  51. package/dist/lib/helper/sjs.d.ts +1 -6
  52. package/dist/lib/helper/sjs.js +1 -34
  53. package/dist/lib/helper/sjson.d.ts +1 -3
  54. package/dist/lib/helper/sjson.js +2 -30
  55. package/dist/lib/helper/spath.d.ts +1 -6
  56. package/dist/lib/helper/spath.js +1 -14
  57. package/dist/lib/helper/surl.d.ts +1 -5
  58. package/dist/lib/helper/surl.js +1 -23
  59. package/dist/lib/middlewares/csp.d.ts +1 -1
  60. package/dist/lib/middlewares/csp.js +2 -44
  61. package/dist/lib/middlewares/csrf.d.ts +1 -1
  62. package/dist/lib/middlewares/csrf.js +2 -31
  63. package/dist/lib/middlewares/dta.js +2 -11
  64. package/dist/lib/middlewares/hsts.d.ts +1 -1
  65. package/dist/lib/middlewares/hsts.js +2 -17
  66. package/dist/lib/middlewares/index.d.ts +12 -12
  67. package/dist/lib/middlewares/index.js +12 -25
  68. package/dist/lib/middlewares/methodnoallow.js +1 -13
  69. package/dist/lib/middlewares/noopen.d.ts +1 -1
  70. package/dist/lib/middlewares/noopen.js +2 -15
  71. package/dist/lib/middlewares/nosniff.d.ts +1 -1
  72. package/dist/lib/middlewares/nosniff.js +2 -25
  73. package/dist/lib/middlewares/referrerPolicy.d.ts +1 -1
  74. package/dist/lib/middlewares/referrerPolicy.js +2 -29
  75. package/dist/lib/middlewares/xframe.d.ts +1 -1
  76. package/dist/lib/middlewares/xframe.js +2 -16
  77. package/dist/lib/middlewares/xssProtection.d.ts +1 -1
  78. package/dist/lib/middlewares/xssProtection.js +2 -15
  79. package/dist/lib/utils.d.ts +1 -1
  80. package/dist/lib/utils.js +1 -125
  81. package/dist/methodnoallow-BAZONArS.js +15 -0
  82. package/dist/middlewares-CkQjv8t0.js +27 -0
  83. package/dist/noopen-C3jUBwoH.js +17 -0
  84. package/dist/nosniff-CcLkhX2I.js +27 -0
  85. package/dist/referrerPolicy-D4Uafq6c.js +31 -0
  86. package/dist/response-BFnHAJrV.js +69 -0
  87. package/dist/safe_curl-UlViaxoF.js +19 -0
  88. package/dist/safe_curl-mqZZv_YQ.d.ts +20 -0
  89. package/dist/shtml-CAquTzgV.d.ts +6 -0
  90. package/dist/shtml-CgF4kOx-.js +53 -0
  91. package/dist/sjs-Cbmkk5xS.js +36 -0
  92. package/dist/sjs-QZIJYS71.d.ts +7 -0
  93. package/dist/sjson-BetFnVR6.js +32 -0
  94. package/dist/sjson-O-vKJPws.d.ts +4 -0
  95. package/dist/spath-Bu9sy6Kz.js +16 -0
  96. package/dist/spath-DseDPHxf.d.ts +7 -0
  97. package/dist/surl-ClleTea7.js +25 -0
  98. package/dist/surl-JV70X_RZ.d.ts +6 -0
  99. package/dist/types-BZR2U30p.d.ts +38 -0
  100. package/dist/types-DnJpiSJb.js +1 -0
  101. package/dist/types.d.ts +3 -38
  102. package/dist/types.js +2 -0
  103. package/dist/utils-Cajs5P8M.js +127 -0
  104. package/dist/xframe-q9fEZkVI.js +18 -0
  105. package/dist/xssProtection-D5QsHX-e.js +17 -0
  106. package/package.json +5 -5
@@ -1,166 +1,3 @@
1
- import z from "zod";
2
- import { Context } from "egg";
1
+ import { LookupAddress, SecurityConfig, SecurityHelperConfig, SecurityMiddlewareName, config_default_default } from "../config.default-AcwQOAG0.js";
3
2
 
4
- //#region src/config/config.default.ts
5
- const CSRFSupportRequestItem = z.object({
6
- path: z.instanceof(RegExp),
7
- methods: z.array(z.string())
8
- });
9
- const LookupAddress = z.object({
10
- address: z.string(),
11
- family: z.number()
12
- });
13
- const LookupAddressAndStringArray = z.union([z.string(), LookupAddress]).array();
14
- const SSRFCheckAddressFunction = z.function().args(z.union([
15
- z.string(),
16
- LookupAddress,
17
- LookupAddressAndStringArray
18
- ]), z.union([z.number(), z.string()]), z.string()).returns(z.boolean());
19
- const SecurityMiddlewareName = z.enum([
20
- "csrf",
21
- "hsts",
22
- "methodnoallow",
23
- "noopen",
24
- "nosniff",
25
- "csp",
26
- "xssProtection",
27
- "xframe",
28
- "dta"
29
- ]);
30
- /**
31
- * (ctx) => boolean
32
- */
33
- const IgnoreOrMatchHandler = z.function().args(z.instanceof(Context)).returns(z.boolean());
34
- const IgnoreOrMatch = z.union([
35
- z.string(),
36
- z.instanceof(RegExp),
37
- IgnoreOrMatchHandler
38
- ]);
39
- const IgnoreOrMatchOption = z.union([IgnoreOrMatch, IgnoreOrMatch.array()]).optional();
40
- const SecurityConfig = z.object({
41
- domainWhiteList: z.array(z.string()).default([]),
42
- protocolWhiteList: z.array(z.string()).default([]),
43
- defaultMiddleware: z.union([z.string(), z.array(SecurityMiddlewareName)]).default(SecurityMiddlewareName.options),
44
- csrf: z.preprocess((val) => {
45
- if (typeof val === "boolean") return { enable: val };
46
- return val;
47
- }, z.object({
48
- match: IgnoreOrMatchOption,
49
- ignore: IgnoreOrMatchOption,
50
- enable: z.boolean().default(true),
51
- type: z.enum([
52
- "ctoken",
53
- "referer",
54
- "all",
55
- "any"
56
- ]).default("ctoken"),
57
- ignoreJSON: z.boolean().default(false),
58
- cookieName: z.union([z.string(), z.array(z.string())]).default("csrfToken"),
59
- sessionName: z.string().default("csrfToken"),
60
- headerName: z.string().default("x-csrf-token"),
61
- bodyName: z.union([z.string(), z.array(z.string())]).default("_csrf"),
62
- queryName: z.union([z.string(), z.array(z.string())]).default("_csrf"),
63
- rotateWhenInvalid: z.boolean().default(false),
64
- useSession: z.boolean().default(false),
65
- cookieDomain: z.union([z.string(), z.function().args(z.instanceof(Context)).returns(z.string())]).optional(),
66
- supportedRequests: z.array(CSRFSupportRequestItem).default([{
67
- path: /^\//,
68
- methods: [
69
- "POST",
70
- "PATCH",
71
- "DELETE",
72
- "PUT",
73
- "CONNECT"
74
- ]
75
- }]),
76
- refererWhiteList: z.array(z.string()).default([]),
77
- cookieOptions: z.object({
78
- signed: z.boolean(),
79
- httpOnly: z.boolean(),
80
- overwrite: z.boolean()
81
- }).default({
82
- signed: false,
83
- httpOnly: false,
84
- overwrite: true
85
- })
86
- }).default({})),
87
- xframe: z.object({
88
- match: IgnoreOrMatchOption,
89
- ignore: IgnoreOrMatchOption,
90
- enable: z.boolean().default(true),
91
- value: z.string().default("SAMEORIGIN")
92
- }).default({}),
93
- hsts: z.object({
94
- match: IgnoreOrMatchOption,
95
- ignore: IgnoreOrMatchOption,
96
- enable: z.boolean().default(false),
97
- maxAge: z.number().default(365 * 24 * 3600),
98
- includeSubdomains: z.boolean().default(false)
99
- }).default({}),
100
- methodnoallow: z.object({
101
- match: IgnoreOrMatchOption,
102
- ignore: IgnoreOrMatchOption,
103
- enable: z.boolean().default(true)
104
- }).default({}),
105
- noopen: z.object({
106
- match: IgnoreOrMatchOption,
107
- ignore: IgnoreOrMatchOption,
108
- enable: z.boolean().default(true)
109
- }).default({}),
110
- nosniff: z.object({
111
- match: IgnoreOrMatchOption,
112
- ignore: IgnoreOrMatchOption,
113
- enable: z.boolean().default(true)
114
- }).default({}),
115
- xssProtection: z.object({
116
- match: IgnoreOrMatchOption,
117
- ignore: IgnoreOrMatchOption,
118
- enable: z.boolean().default(true),
119
- value: z.coerce.string().default("1; mode=block")
120
- }).default({}),
121
- csp: z.object({
122
- match: IgnoreOrMatchOption,
123
- ignore: IgnoreOrMatchOption,
124
- enable: z.boolean().default(false),
125
- policy: z.record(z.union([
126
- z.string(),
127
- z.array(z.string()),
128
- z.boolean()
129
- ])).default({}),
130
- reportOnly: z.boolean().optional(),
131
- supportIE: z.boolean().optional()
132
- }).default({}),
133
- referrerPolicy: z.object({
134
- match: IgnoreOrMatchOption,
135
- ignore: IgnoreOrMatchOption,
136
- enable: z.boolean().default(false),
137
- value: z.string().default("no-referrer-when-downgrade")
138
- }).default({}),
139
- dta: z.object({
140
- match: IgnoreOrMatchOption,
141
- ignore: IgnoreOrMatchOption,
142
- enable: z.boolean().default(true)
143
- }).default({}),
144
- ssrf: z.object({
145
- ipBlackList: z.array(z.string()).optional(),
146
- ipExceptionList: z.array(z.string()).optional(),
147
- hostnameExceptionList: z.array(z.string()).optional(),
148
- checkAddress: SSRFCheckAddressFunction.optional()
149
- }).default({}),
150
- match: z.union([IgnoreOrMatch, IgnoreOrMatch.array()]).optional(),
151
- ignore: z.union([IgnoreOrMatch, IgnoreOrMatch.array()]).optional(),
152
- __protocolWhiteListSet: z.set(z.string()).optional().readonly()
153
- });
154
- const SecurityHelperOnTagAttrHandler = z.function().args(z.string(), z.string(), z.string(), z.boolean()).returns(z.union([z.string(), z.void()]));
155
- const SecurityHelperConfig = z.object({ shtml: z.object({
156
- whiteList: z.record(z.array(z.string())).optional(),
157
- domainWhiteList: z.array(z.string()).optional(),
158
- onTagAttr: SecurityHelperOnTagAttrHandler.optional()
159
- }).default({}) });
160
- var config_default_default = {
161
- security: SecurityConfig.parse({}),
162
- helper: SecurityHelperConfig.parse({})
163
- };
164
-
165
- //#endregion
166
3
  export { LookupAddress, SecurityConfig, SecurityHelperConfig, SecurityMiddlewareName, config_default_default as default };
@@ -0,0 +1,166 @@
1
+ import z from "zod";
2
+ import { Context } from "egg";
3
+
4
+ //#region src/config/config.default.ts
5
+ const CSRFSupportRequestItem = z.object({
6
+ path: z.instanceof(RegExp),
7
+ methods: z.array(z.string())
8
+ });
9
+ const LookupAddress = z.object({
10
+ address: z.string(),
11
+ family: z.number()
12
+ });
13
+ const LookupAddressAndStringArray = z.union([z.string(), LookupAddress]).array();
14
+ const SSRFCheckAddressFunction = z.function().args(z.union([
15
+ z.string(),
16
+ LookupAddress,
17
+ LookupAddressAndStringArray
18
+ ]), z.union([z.number(), z.string()]), z.string()).returns(z.boolean());
19
+ const SecurityMiddlewareName = z.enum([
20
+ "csrf",
21
+ "hsts",
22
+ "methodnoallow",
23
+ "noopen",
24
+ "nosniff",
25
+ "csp",
26
+ "xssProtection",
27
+ "xframe",
28
+ "dta"
29
+ ]);
30
+ /**
31
+ * (ctx) => boolean
32
+ */
33
+ const IgnoreOrMatchHandler = z.function().args(z.instanceof(Context)).returns(z.boolean());
34
+ const IgnoreOrMatch = z.union([
35
+ z.string(),
36
+ z.instanceof(RegExp),
37
+ IgnoreOrMatchHandler
38
+ ]);
39
+ const IgnoreOrMatchOption = z.union([IgnoreOrMatch, IgnoreOrMatch.array()]).optional();
40
+ const SecurityConfig = z.object({
41
+ domainWhiteList: z.array(z.string()).default([]),
42
+ protocolWhiteList: z.array(z.string()).default([]),
43
+ defaultMiddleware: z.union([z.string(), z.array(SecurityMiddlewareName)]).default(SecurityMiddlewareName.options),
44
+ csrf: z.preprocess((val) => {
45
+ if (typeof val === "boolean") return { enable: val };
46
+ return val;
47
+ }, z.object({
48
+ match: IgnoreOrMatchOption,
49
+ ignore: IgnoreOrMatchOption,
50
+ enable: z.boolean().default(true),
51
+ type: z.enum([
52
+ "ctoken",
53
+ "referer",
54
+ "all",
55
+ "any"
56
+ ]).default("ctoken"),
57
+ ignoreJSON: z.boolean().default(false),
58
+ cookieName: z.union([z.string(), z.array(z.string())]).default("csrfToken"),
59
+ sessionName: z.string().default("csrfToken"),
60
+ headerName: z.string().default("x-csrf-token"),
61
+ bodyName: z.union([z.string(), z.array(z.string())]).default("_csrf"),
62
+ queryName: z.union([z.string(), z.array(z.string())]).default("_csrf"),
63
+ rotateWhenInvalid: z.boolean().default(false),
64
+ useSession: z.boolean().default(false),
65
+ cookieDomain: z.union([z.string(), z.function().args(z.instanceof(Context)).returns(z.string())]).optional(),
66
+ supportedRequests: z.array(CSRFSupportRequestItem).default([{
67
+ path: /^\//,
68
+ methods: [
69
+ "POST",
70
+ "PATCH",
71
+ "DELETE",
72
+ "PUT",
73
+ "CONNECT"
74
+ ]
75
+ }]),
76
+ refererWhiteList: z.array(z.string()).default([]),
77
+ cookieOptions: z.object({
78
+ signed: z.boolean(),
79
+ httpOnly: z.boolean(),
80
+ overwrite: z.boolean()
81
+ }).default({
82
+ signed: false,
83
+ httpOnly: false,
84
+ overwrite: true
85
+ })
86
+ }).default({})),
87
+ xframe: z.object({
88
+ match: IgnoreOrMatchOption,
89
+ ignore: IgnoreOrMatchOption,
90
+ enable: z.boolean().default(true),
91
+ value: z.string().default("SAMEORIGIN")
92
+ }).default({}),
93
+ hsts: z.object({
94
+ match: IgnoreOrMatchOption,
95
+ ignore: IgnoreOrMatchOption,
96
+ enable: z.boolean().default(false),
97
+ maxAge: z.number().default(365 * 24 * 3600),
98
+ includeSubdomains: z.boolean().default(false)
99
+ }).default({}),
100
+ methodnoallow: z.object({
101
+ match: IgnoreOrMatchOption,
102
+ ignore: IgnoreOrMatchOption,
103
+ enable: z.boolean().default(true)
104
+ }).default({}),
105
+ noopen: z.object({
106
+ match: IgnoreOrMatchOption,
107
+ ignore: IgnoreOrMatchOption,
108
+ enable: z.boolean().default(true)
109
+ }).default({}),
110
+ nosniff: z.object({
111
+ match: IgnoreOrMatchOption,
112
+ ignore: IgnoreOrMatchOption,
113
+ enable: z.boolean().default(true)
114
+ }).default({}),
115
+ xssProtection: z.object({
116
+ match: IgnoreOrMatchOption,
117
+ ignore: IgnoreOrMatchOption,
118
+ enable: z.boolean().default(true),
119
+ value: z.coerce.string().default("1; mode=block")
120
+ }).default({}),
121
+ csp: z.object({
122
+ match: IgnoreOrMatchOption,
123
+ ignore: IgnoreOrMatchOption,
124
+ enable: z.boolean().default(false),
125
+ policy: z.record(z.union([
126
+ z.string(),
127
+ z.array(z.string()),
128
+ z.boolean()
129
+ ])).default({}),
130
+ reportOnly: z.boolean().optional(),
131
+ supportIE: z.boolean().optional()
132
+ }).default({}),
133
+ referrerPolicy: z.object({
134
+ match: IgnoreOrMatchOption,
135
+ ignore: IgnoreOrMatchOption,
136
+ enable: z.boolean().default(false),
137
+ value: z.string().default("no-referrer-when-downgrade")
138
+ }).default({}),
139
+ dta: z.object({
140
+ match: IgnoreOrMatchOption,
141
+ ignore: IgnoreOrMatchOption,
142
+ enable: z.boolean().default(true)
143
+ }).default({}),
144
+ ssrf: z.object({
145
+ ipBlackList: z.array(z.string()).optional(),
146
+ ipExceptionList: z.array(z.string()).optional(),
147
+ hostnameExceptionList: z.array(z.string()).optional(),
148
+ checkAddress: SSRFCheckAddressFunction.optional()
149
+ }).default({}),
150
+ match: z.union([IgnoreOrMatch, IgnoreOrMatch.array()]).optional(),
151
+ ignore: z.union([IgnoreOrMatch, IgnoreOrMatch.array()]).optional(),
152
+ __protocolWhiteListSet: z.set(z.string()).optional().readonly()
153
+ });
154
+ const SecurityHelperOnTagAttrHandler = z.function().args(z.string(), z.string(), z.string(), z.boolean()).returns(z.union([z.string(), z.void()]));
155
+ const SecurityHelperConfig = z.object({ shtml: z.object({
156
+ whiteList: z.record(z.array(z.string())).optional(),
157
+ domainWhiteList: z.array(z.string()).optional(),
158
+ onTagAttr: SecurityHelperOnTagAttrHandler.optional()
159
+ }).default({}) });
160
+ var config_default_default = {
161
+ security: SecurityConfig.parse({}),
162
+ helper: SecurityHelperConfig.parse({})
163
+ };
164
+
165
+ //#endregion
166
+ export { LookupAddress, SecurityConfig, SecurityHelperConfig, SecurityMiddlewareName, config_default_default };