mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-09-20 21:50:11 +08:00
fix(security): PR 审查整改 - setWindowOpenHandler 域名白名单 / openWebsite 协议校验 / 批量云端安装并发控制
- electron/main/index.ts: setWindowOpenHandler 增加 ALLOWED_EXTERNAL_HOSTS 域名后缀白名单,仅可信 https 域名可 shell.openExternal(阻断项2) - AppDetailModal.vue: openWebsite 增加 http/https 协议校验 + noopener,noreferrer(改进项5) - useAccountSync.ts: installCloudItems 改为分批(BATCH_SIZE=3) + Promise.allSettled 错误收集(改进项2) - 审查误报/未改动项已贴代码实证:阻断1 v-html 已用 textContent 转义;改进3 resolveCloudInstallCandidate 已有降级匹配链;改进4 单窗口无 HMR 不重复注册;改进1 暂停/恢复主进程无 handler 维持 TODO
This commit is contained in:
@@ -644,8 +644,15 @@ const closeMetaModal = () => {
|
||||
};
|
||||
|
||||
const openWebsite = (url: string) => {
|
||||
if (url) {
|
||||
window.open(url, "_blank");
|
||||
if (!url) return;
|
||||
try {
|
||||
const parsed = new URL(url);
|
||||
// 仅允许 http/https 协议,杜绝 javascript:/data: 等危险协议
|
||||
if (parsed.protocol === "https:" || parsed.protocol === "http:") {
|
||||
window.open(url, "_blank", "noopener,noreferrer");
|
||||
}
|
||||
} catch {
|
||||
// 无效 URL,不打开
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user