Skip to content

feat(middleware): sanitize sensitive fields from error responses (#4) - #6

Open
Cid-oe wants to merge 1 commit into
Arbellar:mainfrom
Cid-oe:feat/error-response-sanitizer
Open

feat(middleware): sanitize sensitive fields from error responses (#4)#6
Cid-oe wants to merge 1 commit into
Arbellar:mainfrom
Cid-oe:feat/error-response-sanitizer

Conversation

@Cid-oe

@Cid-oe Cid-oe commented Sep 6, 2026

Copy link
Copy Markdown

Summary

Closes #4.

Adds a pure, structured error-response sanitizer helper module in src/middleware/errorResponse.ts and integrates it into errorHandler to prevent sensitive fields (credentials, private keys, database connection strings, tokens, etc.) from leaking in error responses.

Changes

  • Created src/middleware/errorResponse.ts exporting:
    • DENY_LISTED_KEYS: Set of sensitive keys to strip (case-insensitively).
    • sanitizeErrorDetails: Pure recursive function removing sensitive keys from objects and arrays, while passing primitives and nullish values safely through.
  • Exported the module from src/middleware/index.ts.
  • Updated src/middleware/errorHandler.ts to pass details and object development error.stack through sanitizeErrorDetails.
  • Created comprehensive unit test suite in tests/unit/middleware/errorResponse.test.ts covering:
    • Top-level deny-listed keys (case-insensitive)
    • Deeply nested deny-listed keys
    • Arrays containing sensitive keys
    • Primitives and non-object inputs (null, undefined, strings, numbers)
    • Complex nested structures

Verification

  • pnpm test: 9/9 tests pass
  • pnpm typecheck: zero type errors
  • pnpm format:check: all files format compliant
  • pnpm lint: 0 errors

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(middleware): Sanitize Sensitive Fields from Error Responses

1 participant