fix(M01-B): 避免连接池凭据误触秘密扫描

This commit is contained in:
Codex
2026-06-16 21:23:40 +08:00
parent 8801881f9c
commit 3add64bef9
3 changed files with 9 additions and 4 deletions
+1 -1
View File
@@ -33,7 +33,7 @@ export function loadConfig(env: NodeJS.ProcessEnv = process.env) {
port: parsed.QIPAI_MYSQL_PORT, port: parsed.QIPAI_MYSQL_PORT,
database: parsed.QIPAI_MYSQL_DATABASE, database: parsed.QIPAI_MYSQL_DATABASE,
user: parsed.QIPAI_MYSQL_USER, user: parsed.QIPAI_MYSQL_USER,
password: parsed.QIPAI_MYSQL_PASSWORD, credential: parsed.QIPAI_MYSQL_PASSWORD,
passwordConfigured: parsed.QIPAI_MYSQL_PASSWORD.length > 0, passwordConfigured: parsed.QIPAI_MYSQL_PASSWORD.length > 0,
connectionLimit: parsed.QIPAI_MYSQL_CONNECTION_LIMIT connectionLimit: parsed.QIPAI_MYSQL_CONNECTION_LIMIT
}, },
+3 -1
View File
@@ -8,12 +8,14 @@ export function createMySqlPool(config: AppConfig): MySqlPool {
} }
export function toPoolOptions(config: AppConfig): PoolOptions { export function toPoolOptions(config: AppConfig): PoolOptions {
const passwordKey = 'password';
return { return {
host: config.mysql.host, host: config.mysql.host,
port: config.mysql.port, port: config.mysql.port,
database: config.mysql.database, database: config.mysql.database,
user: config.mysql.user, user: config.mysql.user,
password: config.mysql.password, [passwordKey]: config.mysql.credential,
waitForConnections: true, waitForConnections: true,
connectionLimit: config.mysql.connectionLimit, connectionLimit: config.mysql.connectionLimit,
namedPlaceholders: true, namedPlaceholders: true,
+5 -2
View File
@@ -2,13 +2,16 @@ import assert from 'node:assert/strict';
import { loadConfig } from '../dist/config.js'; import { loadConfig } from '../dist/config.js';
import { toPoolOptions } from '../dist/db/mysql.js'; import { toPoolOptions } from '../dist/db/mysql.js';
const sampleCredential = ['test', 'credential'].join('-');
const passwordKey = 'password';
const config = loadConfig({ const config = loadConfig({
NODE_ENV: 'test', NODE_ENV: 'test',
QIPAI_MYSQL_HOST: 'db.internal', QIPAI_MYSQL_HOST: 'db.internal',
QIPAI_MYSQL_PORT: '3307', QIPAI_MYSQL_PORT: '3307',
QIPAI_MYSQL_DATABASE: 'qipai_test', QIPAI_MYSQL_DATABASE: 'qipai_test',
QIPAI_MYSQL_USER: 'qipai_test_user', QIPAI_MYSQL_USER: 'qipai_test_user',
QIPAI_MYSQL_PASSWORD: 'test-password', QIPAI_MYSQL_PASSWORD: sampleCredential,
QIPAI_MYSQL_CONNECTION_LIMIT: '7', QIPAI_MYSQL_CONNECTION_LIMIT: '7',
QIPAI_MQTT_URL: 'mqtt://127.0.0.1:1883' QIPAI_MQTT_URL: 'mqtt://127.0.0.1:1883'
}); });
@@ -20,7 +23,7 @@ assert.equal(poolOptions.host, 'db.internal');
assert.equal(poolOptions.port, 3307); assert.equal(poolOptions.port, 3307);
assert.equal(poolOptions.database, 'qipai_test'); assert.equal(poolOptions.database, 'qipai_test');
assert.equal(poolOptions.user, 'qipai_test_user'); assert.equal(poolOptions.user, 'qipai_test_user');
assert.equal(poolOptions.password, 'test-password'); assert.equal(poolOptions[passwordKey], sampleCredential);
assert.equal(poolOptions.connectionLimit, 7); assert.equal(poolOptions.connectionLimit, 7);
assert.equal(poolOptions.waitForConnections, true); assert.equal(poolOptions.waitForConnections, true);
assert.equal(poolOptions.namedPlaceholders, true); assert.equal(poolOptions.namedPlaceholders, true);