fix: 加固安全输入边界并修复订阅兼容性 (#3084)

* fix: harden scoped API inputs and isolate login throttling

* fix: close script path gaps and harden security boundaries

* fix: preserve subscription aliases and avoid extension eval

* fix: allow cancelling invalid historical subscriptions

* fix: make script parent validation explicit for CodeQL

* fix: limit command execution and clarify trusted path branches

* fix: separate diff tool script access from config APIs

* fix: clean up obsolete subscription SSH credentials
This commit is contained in:
whyour
2026-10-06 18:21:54 +08:00
committed by GitHub
parent 2ab9c702e6
commit 2cab112391
33 changed files with 2468 additions and 216 deletions
+5 -1
View File
@@ -1,9 +1,13 @@
const test = require('node:test');
const assert = require('node:assert/strict');
const path = require('node:path');
const fs = require('node:fs');
const os = require('node:os');
const { Sequelize, DataTypes } = require('sequelize');
const load = require('../helpers/load-security-module.cjs');
async function fixture(t, onKill = async () => {}) {
const logPath = fs.mkdtempSync(path.join(os.tmpdir(), 'ql-stop-log-'));
t.after(() => fs.rmSync(logPath, { recursive: true, force: true }));
const db = new Sequelize({
dialect: 'sqlite',
storage: ':memory:',
@@ -41,7 +45,7 @@ async function fixture(t, onKill = async () => {}) {
let service;
const killed = [];
const CronService = load(path.resolve('back/services/cron.ts'), {
'../config': {},
'../config': { logPath },
'../data/cron': {
CrontabModel: crons,
CrontabStatus: { queued: 3, running: 0, idle: 1 },