mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-22 12:13:43 +08:00
23 lines
939 B
JavaScript
23 lines
939 B
JavaScript
const secretKey = /(password|passwd|token|secret|authorization|cookie|api[-_]?key)/i;
|
|
const bearer = /\b(Bearer\s+)[A-Za-z0-9._~+/=-]+/gi;
|
|
const githubToken = /\b(gh[opusr]_[A-Za-z0-9_]{20,})\b/g;
|
|
const jwt = /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g;
|
|
|
|
export function redactText(value) {
|
|
return String(value)
|
|
.replace(bearer, '$1[REDACTED]')
|
|
.replace(githubToken, '[REDACTED_GITHUB_TOKEN]')
|
|
.replace(jwt, '[REDACTED_JWT]')
|
|
.replace(/([?&](?:token|key|secret|password)=)[^&#\s]+/gi, '$1[REDACTED]');
|
|
}
|
|
|
|
export function redact(value, key = '') {
|
|
if (secretKey.test(key)) return '[REDACTED]';
|
|
if (typeof value === 'string') return redactText(value);
|
|
if (Array.isArray(value)) return value.map((item) => redact(item));
|
|
if (!value || typeof value !== 'object') return value;
|
|
return Object.fromEntries(
|
|
Object.entries(value).map(([childKey, child]) => [childKey, redact(child, childKey)]),
|
|
);
|
|
}
|