Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/modules/helpDesk/services/FeedbackRedaction.ts
T

28 lines
1.3 KiB
TypeScript

const REDACTED_EMAIL = "[REDACTED_EMAIL]";
const REDACTED_TOKEN = "[REDACTED_TOKEN]";
const REDACTED_SECRET = "[REDACTED_SECRET]";
const EMAIL_PATTERN = /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi;
const BEARER_TOKEN_PATTERN = /\bBearer\s+[^\s,;"')]+/gi;
const SECRET_QUERY_VALUE_PATTERN = /([?&](?:api[_-]?key|access[_-]?token|auth[_-]?token|token|secret|client[_-]?secret|key)=)([^&\s]+)/gi;
const KEY_VALUE_TOKEN_PATTERN = /\b((?:api[_-]?key|access[_-]?token|auth[_-]?token|token|secret|client[_-]?secret)\s*[:=]\s*)([^&\s,;"')]+)/gi;
const HEX_SECRET_PATTERN = /\b[a-f0-9]{32,}\b/gi;
const BASE64_SECRET_PATTERN = /\b(?=[A-Za-z0-9+/=_-]{32,}\b)(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z0-9+/=_-]{32,}\b/g;
export function redactFeedbackText(value: string | null | undefined): string {
return (value ?? "")
.trim()
.replace(EMAIL_PATTERN, REDACTED_EMAIL)
.replace(BEARER_TOKEN_PATTERN, `Bearer ${REDACTED_TOKEN}`)
.replace(SECRET_QUERY_VALUE_PATTERN, `$1${REDACTED_TOKEN}`)
.replace(KEY_VALUE_TOKEN_PATTERN, `$1${REDACTED_TOKEN}`)
.replace(HEX_SECRET_PATTERN, REDACTED_SECRET)
.replace(BASE64_SECRET_PATTERN, REDACTED_SECRET);
}
export const feedbackRedactionMarkers = {
email: REDACTED_EMAIL,
token: REDACTED_TOKEN,
secret: REDACTED_SECRET,
};