Implementação da Validação de Caracteres ASCII em um Aplicativo NestJS

Implementação da Validação de Caracteres ASCII em um Aplicativo NestJS

Objetivo

O objetivo deste documento é fornecer orientações sobre a implementação da validação de caracteres ASCII em cabeçalhos de requisição e resposta em um aplicativo NestJS.

Requisitos

Para implementar a validação de caracteres ASCII, você precisa do seguinte:

  • Node.js e npm instalados
  • Um aplicativo NestJS funcional

Passos de Implementação

Passo 1: Crie um Middleware Personalizado

Crie um middleware personalizado chamado 'AsciiHeaderValidationMiddleware' que verifica os cabeçalhos de requisição e resposta quanto à validade dos caracteres ASCII. Use o código abaixo como ponto de partida:


import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';

@Injectable()
export class AsciiHeaderValidationMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: NextFunction) {
    for (const key in req.headers) {
      if (req.headers.hasOwnProperty(key)) {
        if (!isAscii(req.headers[key])) {
          return res.status(400).send('Invalid request header value. Use ASCII characters only.');
        }
      }
    }

    const originalSend = res.send;
    res.send = function (body) {
      for (const key in res.getHeaders()) {
        if (!isAscii(res.getHeader(key) as string)) {
          return res.status(500).send('Invalid response header value. Use ASCII characters only.');
        }
      }
      originalSend.call(this, body);
    };

    next();
  }
}

function isAscii(value: string): boolean {
  return /^[\x00-\x7F]*$/.test(value);
}

Passo 2: Registre o Middleware no Módulo Principal

No módulo principal (geralmente 'app.module.ts') do seu aplicativo NestJS, registre o middleware 'AsciiHeaderValidationMiddleware' para aplicá-lo a todas as rotas. Use o código abaixo como exemplo:


import { Module, MiddlewareConsumer, RequestMethod } from '@nestjs/common';
import { AsciiHeaderValidationMiddleware } from './ascii-header-validation.middleware';

@Module({
  // Outros provedores e controladores
})
export class AppModule {
  configure(consumer: MiddlewareConsumer) {
    consumer
      .apply(AsciiHeaderValidationMiddleware)
      .forRoutes({ path: '*', method: RequestMethod.ALL });
  }
}

Passo 3: Teste a Implementação

Teste o middleware para garantir que ele verifica corretamente os cabeçalhos de requisição e resposta quanto à validade dos caracteres ASCII. Você pode usar ferramentas como o Postman para fazer isso.

Conclusão

A validação de caracteres ASCII em cabeçalhos de requisição e resposta ajuda a garantir a integridade dos dados transmitidos em um aplicativo NestJS, evitando caracteres inválidos.

Você achou esse artigo útil?