"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o middleware TrimStrings do Laravel pode causar problemas

Como o middleware TrimStrings do Laravel pode causar problemas

Publicado em 2024-11-08
Navegar:202

How Laravel

Laravel é um framework popular no mundo PHP, oferecendo aos desenvolvedores ótimas ferramentas para simplificar seu trabalho. No entanto, por vezes estas conveniências podem levar a problemas inesperados. Neste post, discutirei como o middleware TrimStrings no Laravel pode causar problemas e como resolvê-los.

O que é o middleware TrimStrings e o que ele faz?

O middleware TrimStrings é usado em aplicativos Laravel para cortar automaticamente espaços em branco de dados de solicitação recebidos, como entradas de formulário. Isto é particularmente útil quando os usuários deixam acidentalmente espaços no início ou no final dos campos de entrada. Por exemplo, se um usuário inserir " [email protected] " com espaços ao redor do endereço de e-mail em um formulário, o middleware TrimStrings cortará esses espaços, garantindo que apenas "[email protected]" seja processado .

Esse recurso é benéfico para evitar erros causados ​​por espaços em branco desnecessários e para lidar com dados mais limpos. No entanto, como sempre, em certos casos especiais, este comportamento padrão pode levar a consequências indesejadas.

O que aconteceu?

Em um projeto em que estávamos nos integrando com um provedor de pagamentos baseado no Brasil, precisávamos capturar e validar os resultados do pagamento por meio de um sistema de retorno de chamada. O provedor de pagamento envia o resultado da transação ao nosso servidor por meio de uma solicitação POST, e nós validamos a solicitação realizando uma verificação de assinatura/hash.

Este processo de verificação segue uma lógica simples:

  1. Recolhemos os dados enviados pelo provedor.
  2. Todos os dados são concatenados em uma única string.
  3. Essa string é criptografada usando o algoritmo SHA256 com uma chave secreta fornecida pelo provedor de pagamento.
  4. O hash resultante é comparado com o hash enviado pelo provedor. Se corresponderem, a solicitação será aceita; caso contrário, será rejeitado.

Como identificamos o problema?

Inicialmente, foi difícil entender por que algumas solicitações válidas estavam sendo rejeitadas. No entanto, depois de inspecionar os logs do Nginx, percebemos que o parâmetro full_name na solicitação recebida mantinha espaços à direita. Apesar disso, em nosso servidor, esses espaços foram cortados, causando falha na verificação do hash. Foi quando percebemos que o middleware TrimStrings estava causando esse problema.

Qual é a solução?

Para evitar tais problemas, é necessário desabilitar o middleware TrimStrings para rotas ou solicitações específicas. Laravel 8 introduziu o método TrimStrings::skipWhen, que fornece uma solução personalizada para esta situação.

Abaixo está um exemplo de como aplicar esta solução usando um provedor:

use Illuminate\Foundation\Http\Middleware\TrimStrings;
use Illuminate\Http\Request;

// ...

TrimStrings::skipWhen(function (Request $request) {
    return $request->is('api/v1/integrations/foo-provider/callback');
});

Este trecho de código desativa o middleware TrimStrings para uma rota específica. Nesse caso, o corte não ocorrerá para solicitações provenientes da rota api/v1/integrations/foo-provider/callback, garantindo que o processo de verificação de hash funcione sem problemas.

Conclusão

Os recursos padrão do Laravel geralmente facilitam as coisas, mas em certos cenários, eles podem levar a resultados inesperados. Portanto, é importante compreender como funcionam as ferramentas que utilizamos e avaliar cuidadosamente seus potenciais impactos. Embora o middleware TrimStrings seja uma ferramenta útil na maioria dos casos, ele pode causar problemas em cenários como este. Felizmente, soluções flexíveis como TrimStrings::skipWhen nos permitem evitar tais problemas.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/yidemir/how-trimstrings-can-become-a-problem-for-you-in-laravel-o4k?1 Se houver alguma violação, entre em contato com study_golang@163 .com para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3