@nemigo/electron 1.0.1 → 1.3.0
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/security.d.ts +15 -8
- package/dist/security.js +16 -9
- package/package.json +2 -2
package/dist/security.d.ts
CHANGED
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Политика защиты навигации и управления доступом к внешним URL.
|
|
2
|
+
* Политика защиты навигации и управления доступом к внешним URL.
|
|
3
|
+
* Защищает от навигационных атак, ограничивая переходы только разрешенным домены
|
|
3
4
|
*
|
|
4
5
|
* @see https://www.electronjs.org/docs/latest/tutorial/security#13-disable-or-limit-navigation
|
|
6
|
+
* @see https://www.electronjs.org/docs/latest/tutorial/security#14-disable-or-limit-creation-of-new-windows
|
|
5
7
|
*/
|
|
6
8
|
export declare class NetworkSecurity {
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
10
|
+
* Разрешенные домены для навигации внутри приложения
|
|
11
|
+
*
|
|
9
12
|
* @readonly
|
|
13
|
+
* @type {Set<string>}
|
|
10
14
|
*/
|
|
11
15
|
readonly allowedInternalOrigins: Set<string>;
|
|
12
16
|
/**
|
|
13
|
-
*
|
|
17
|
+
* Разрешенные внешние домены для открытия в системном браузере
|
|
18
|
+
*
|
|
14
19
|
* @readonly
|
|
20
|
+
* @type {Set<string>}
|
|
15
21
|
*/
|
|
16
22
|
readonly allowedExternalOrigins: Set<string>;
|
|
17
|
-
private
|
|
23
|
+
private extractUrlOrigin;
|
|
18
24
|
/**
|
|
19
|
-
* @param {string[]} [allowedInternal=[]] - Разрешенные внутренние
|
|
20
|
-
* @param {string[]} [allowedExternal=[]] - Разрешенные внешние
|
|
21
|
-
* @param {boolean} [init=true] - Инициализировать обработчики
|
|
25
|
+
* @param {(URL | string)[]} [allowedInternal=[]] - Разрешенные внутренние домены для навигации
|
|
26
|
+
* @param {(URL | string)[]} [allowedExternal=[]] - Разрешенные внешние домены для открытия в браузере
|
|
27
|
+
* @param {boolean} [init=true] - Инициализировать обработчики событий
|
|
22
28
|
*/
|
|
23
|
-
constructor(allowedInternal?: string[], allowedExternal?: string[], init?: boolean);
|
|
29
|
+
constructor(allowedInternal?: (URL | string)[], allowedExternal?: (URL | string)[], init?: boolean);
|
|
24
30
|
/**
|
|
25
31
|
* Инициализирует обработчики событий
|
|
26
32
|
*
|
|
@@ -30,3 +36,4 @@ export declare class NetworkSecurity {
|
|
|
30
36
|
private handleNavigation;
|
|
31
37
|
private handleWindowOpen;
|
|
32
38
|
}
|
|
39
|
+
export default NetworkSecurity;
|
package/dist/security.js
CHANGED
|
@@ -1,32 +1,38 @@
|
|
|
1
1
|
import { app, shell } from "electron";
|
|
2
2
|
/**
|
|
3
|
-
* Политика защиты навигации и управления доступом к внешним URL.
|
|
3
|
+
* Политика защиты навигации и управления доступом к внешним URL.
|
|
4
|
+
* Защищает от навигационных атак, ограничивая переходы только разрешенным домены
|
|
4
5
|
*
|
|
5
6
|
* @see https://www.electronjs.org/docs/latest/tutorial/security#13-disable-or-limit-navigation
|
|
7
|
+
* @see https://www.electronjs.org/docs/latest/tutorial/security#14-disable-or-limit-creation-of-new-windows
|
|
6
8
|
*/
|
|
7
9
|
export class NetworkSecurity {
|
|
8
10
|
/**
|
|
9
|
-
*
|
|
11
|
+
* Разрешенные домены для навигации внутри приложения
|
|
12
|
+
*
|
|
10
13
|
* @readonly
|
|
14
|
+
* @type {Set<string>}
|
|
11
15
|
*/
|
|
12
16
|
allowedInternalOrigins;
|
|
13
17
|
/**
|
|
14
|
-
*
|
|
18
|
+
* Разрешенные внешние домены для открытия в системном браузере
|
|
19
|
+
*
|
|
15
20
|
* @readonly
|
|
21
|
+
* @type {Set<string>}
|
|
16
22
|
*/
|
|
17
23
|
allowedExternalOrigins;
|
|
18
|
-
|
|
24
|
+
extractUrlOrigin(url) {
|
|
19
25
|
const { origin } = new URL(url);
|
|
20
26
|
return origin;
|
|
21
27
|
}
|
|
22
28
|
/**
|
|
23
|
-
* @param {string[]} [allowedInternal=[]] - Разрешенные внутренние
|
|
24
|
-
* @param {string[]} [allowedExternal=[]] - Разрешенные внешние
|
|
25
|
-
* @param {boolean} [init=true] - Инициализировать обработчики
|
|
29
|
+
* @param {(URL | string)[]} [allowedInternal=[]] - Разрешенные внутренние домены для навигации
|
|
30
|
+
* @param {(URL | string)[]} [allowedExternal=[]] - Разрешенные внешние домены для открытия в браузере
|
|
31
|
+
* @param {boolean} [init=true] - Инициализировать обработчики событий
|
|
26
32
|
*/
|
|
27
33
|
constructor(allowedInternal = [], allowedExternal = [], init = true) {
|
|
28
|
-
this.allowedInternalOrigins = new Set(allowedInternal.map((v) => this.
|
|
29
|
-
this.allowedExternalOrigins = new Set(allowedExternal.map((v) => this.
|
|
34
|
+
this.allowedInternalOrigins = new Set(allowedInternal.map((v) => this.extractUrlOrigin(v)));
|
|
35
|
+
this.allowedExternalOrigins = new Set(allowedExternal.map((v) => this.extractUrlOrigin(v)));
|
|
30
36
|
if (init)
|
|
31
37
|
this.init();
|
|
32
38
|
}
|
|
@@ -70,3 +76,4 @@ export class NetworkSecurity {
|
|
|
70
76
|
});
|
|
71
77
|
}
|
|
72
78
|
}
|
|
79
|
+
export default NetworkSecurity;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nemigo/electron",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Vlad Logvin",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"electron": ">=
|
|
26
|
+
"electron": ">=32.0.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@nemigo/configs": "workspace:*"
|