Description
To improve security and streamline development, I propose integrating a built-in content sanitization feature in the framework to automatically prevent Cross-Site Scripting (XSS) attacks. Currently, developers rely on third-party libraries like sanitize-html and need to implement custom sanitization logic manually. This process can be error-prone, repetitive, and introduces unnecessary boilerplate code.
Current Workflow
Step 1: Install the Library
Developers must install sanitize-html:
npm install sanitize-html Proposed Solution
The framework should offer a built-in content sanitization feature, activated via a simple configuration flag or decorator. This would automate input sanitization, reducing boilerplate and ensuring security by default.
Example Implementation
A built-in SanitizePipe would look like this:
import { PipeTransform, Injectable } from '@nestjs/common'; import sanitizeHtml from 'sanitize-html'; @Injectable() export class SanitizePipe implements PipeTransform { transform(value) { if (Array.isArray(value)) { return value.map(item => this.sanitizeValue(item)); } else { return this.sanitizeValue(value); } } private sanitizeValue(value) { if (typeof value === 'string') { return sanitizeHtml(value); } if (typeof value === 'object' && value !== null) { Object.keys(value).forEach(key => { if (typeof value[key] === 'string') { value[key] = sanitizeHtml(value[key]); } }); return value; } return value; } } Global Application
This feature could be applied globally, ensuring sanitization is enabled across the app:
@Module({ providers: [ { provide: APP_PIPE, useClass: SanitizePipe, }, ], }) export class AppModule {} Benefits
Security by Default: Automatically sanitizes all user inputs, reducing the risk of XSS vulnerabilities.
Simplified Setup: Developers no longer need to manually install packages or create custom sanitization logic.
Reduced Boilerplate: With automatic sanitization, developers can focus on application logic rather than repetitive security tasks.
Conclusion
Integrating built-in content sanitization would significantly enhance security and streamline development, reducing boilerplate and minimizing the chances of overlooked vulnerabilities. This feature would make the framework more secure by default and improve the overall developer experience.
