mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 06:05:24 +00:00
fix(electron): validate external login URL scheme and callback port (#1621)
This commit is contained in:
1 parent
d791e52d82
commit
8e5a50623c
3 files changed
+68
No files matched your search
@@ -0,0 +1,41 @@
|
||||
import { createRequire } from "node:module";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
const { isExternalLoginUrl, isCallbackPort } =
|
||||
require("../electron/external-login.cjs") as {
|
||||
isExternalLoginUrl: (value: unknown) => boolean;
|
||||
isCallbackPort: (value: unknown) => boolean;
|
||||
};
|
||||
|
||||
describe("Electron external login", () => {
|
||||
it.each([
|
||||
"https://idp.example.com/authorize?client_id=termix",
|
||||
"http://keycloak.lan:8080/realms/home/protocol/openid-connect/auth",
|
||||
])("opens web login URLs: %s", (url) => {
|
||||
expect(isExternalLoginUrl(url)).toBe(true);
|
||||
});
|
||||
|
||||
it.each([
|
||||
"file:///C:/Windows/System32/calc.exe",
|
||||
"smb://attacker/share",
|
||||
"ms-msdt:/id PCWDiagnostic",
|
||||
"javascript:alert(1)",
|
||||
"not a url",
|
||||
undefined,
|
||||
])("refuses other schemes: %s", (url) => {
|
||||
expect(isExternalLoginUrl(url)).toBe(false);
|
||||
});
|
||||
|
||||
it("accepts the ports the login screen picks", () => {
|
||||
expect(isCallbackPort(17832)).toBe(true);
|
||||
expect(isCallbackPort(17931)).toBe(true);
|
||||
});
|
||||
|
||||
it.each([0, 80, 65536, 17832.5, "17832", NaN, undefined])(
|
||||
"refuses callback port %s",
|
||||
(port) => {
|
||||
expect(isCallbackPort(port)).toBe(false);
|
||||
},
|
||||
);
|
||||
});
|
||||
Reference in new issue
Block a user