Protect CMS deploy password field

This commit is contained in:
DCCONSTRUCTIONS
2026-07-06 13:22:44 +03:00
parent dc49acaa43
commit cfee9d0c19
3 changed files with 92 additions and 4 deletions
+12 -1
View File
@@ -215,6 +215,11 @@ function trailingSlashUrl(value) {
return trimmed.endsWith("/") ? trimmed : `${trimmed}/`;
}
function normalizeSecretEnvName(value, fallback = "MCHOST_PASSWORD") {
const trimmed = String(value || "").trim();
return /^[A-Za-z_][A-Za-z0-9_]*$/.test(trimmed) ? trimmed : fallback;
}
function fileReady(filePath) {
try {
return statSync(filePath).isFile();
@@ -809,8 +814,14 @@ function authorizeRequest(req, res, url) {
}
function publicProjectConfig() {
const deploy = {
...(projectConfig.deploy || {}),
passwordEnv: normalizeSecretEnvName(projectConfig.deploy?.passwordEnv),
};
return {
...projectConfig,
deploy,
id: projectConfig.id || activeProjectId,
runtime: {
cmsRoot,
@@ -829,7 +840,7 @@ function normalizeProjectConfig(payload) {
host: String(payload?.deploy?.host || "").trim(),
port: Number(payload?.deploy?.port || (payload?.deploy?.method === "ftp" ? 21 : 22)),
username: String(payload?.deploy?.username || "").trim(),
passwordEnv: String(payload?.deploy?.passwordEnv || "").trim(),
passwordEnv: normalizeSecretEnvName(payload?.deploy?.passwordEnv),
remotePath: String(payload?.deploy?.remotePath || "").trim(),
deployOnRender: Boolean(payload?.deploy?.deployOnRender),
};