Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como o pacote Spatie gerencia a validação e a desinfetação de entrada do usuário


Como o pacote Spatie gerencia a validação e a desinfetação de entrada do usuário


O pacote Spatie gerencia a validação de entrada do usuário principalmente por meio de um conjunto de regras de validação de Laravel personalizadas e integração com o sistema de validação da Laravel, fornecendo uma abordagem estruturada e extensível para validar dados antes de serem processados ​​ou salvos.

Gerenciamento de validação em pacotes Spatie

Regras de validação personalizadas

A Spatie oferece uma coleção de regras de validação úteis que estendem os recursos de validação nativa de Laravel. Essas regras podem ser usadas em solicitações de formulário Laravel ou diretamente na lógica de validação do controlador. Exemplos incluem:

- Regra autorizada: valida se o usuário logado estiver autorizado a executar uma ação específica em uma instância do modelo, verificando as políticas, como a correspondência de IDs de usuário [1].
- Regra da moeda: valida se uma determinada entrada for um código de moeda válido, suportando padrões ISO 3166 [1].
- Regra de Enum: valida que o valor de entrada pertence a um conjunto predefinido de valores de enumeração, útil para dados fortemente digitados [1].
- Regra ModelSexist: verifica se todos os valores em uma matriz existem como atributos em um modelo especificado, garantindo integridade referencial [1].
- Regra delimitada: valida strings contendo valores delimitados (por exemplo, e-mails separados por vírgula), incluindo opções para definir itens mínimos/máximos, permitir duplicatas e personalizar separadores [1].

Essas regras se integram perfeitamente ao sistema de validação do Laravel, permitindo que os desenvolvedores os definam no método `regras ()` método de solicitações de formulário ou matrizes de validação em linha.

Validação no pacote de dados Spatie Laravel

O pacote de dados Spatie Laravel aprimora a validação validando dados antes de criar objetos de dados. A validação ocorre automaticamente quando:

- injetar um objeto de dados de uma solicitação.
- chamando o método `do` em um objeto de dados com dados de solicitação.

Você também pode acionar manualmente a validação por meio de métodos como `validate ()` ou `validatendCreate ()`. O pacote suporta a configuração de estratégias de validação, como sempre validando ou desativando a validação completamente, fornecendo controle de granulação fina sobre quando ocorre a validação [4].

Validação de dois-step

Spatie está explorando uma abordagem de validação em duas etapas onde:

- A primeira etapa aplica regras básicas para garantir que a estrutura de dados seja sólida e evite erros de PHP.
- A segunda etapa aplica regras de validação mais complexas.

Essa abordagem pode melhorar a robustez capturando erros mais cedo e fornecendo um feedback de validação mais claro [7].

Sinitização

Enquanto os pacotes da Spatie se concentram principalmente na validação, o próprio Laravel lida com a higienização implicitamente através da validação e da ligação de dados. Por exemplo, as solicitações de formulário da Laravel higienizam automaticamente as entradas, validando e filtrando dados antes de serem usados ​​no aplicativo. As regras de validação da Spatie complementam isso, garantindo que os dados estejam em conformidade com regras ou formatos de negócios específicos.

Os desenvolvedores podem estender a higienização criando atributos de validação personalizados ou higienizando manualmente os insumos antes ou depois da validação, conforme necessário [3].

Resumo

- Spatie fornece um rico conjunto de regras de validação de Laravel para cenários de validação comuns e complexos, como verificações de autorização, validação de enum, verificações de existência e validação de entrada delimitada [1].
- O pacote de dados do Laravel da Spatie valida os dados antes da criação de objetos, com opções para validação manual ou automática e estratégias de validação configuráveis ​​[4].
- Um processo de validação em duas etapas está sendo desenvolvido para melhorar a robustez da validação [7].
- A higienização é geralmente tratada pelos mecanismos de validação e manuseio de entradas do Laravel, com as ferramentas da Spatie focadas na correção e extensibilidade da validação [3].

Essa abordagem garante que a entrada do usuário seja rigorosamente validada de acordo com as regras específicas do aplicativo antes do processamento, reduzindo erros e melhorando a segurança.

Citações:
[1] https://github.com/spatie/laravel-validation-rules
[2] https://zapkit.dev/blog/ultimate-guide-to-valides-and-sanitize-http-requests-em-laravel
[3] https://spatie.be/docs/laravel-data/v4/validation/using-validation-attributes
[4] https://spatie.be/docs/laravel-data/v4/validation/introduction
[5] https://escape.tech/blog/laravel-sql-injection-guide/
[6] https://www.youtube.com/watch?v=sw1ddj5pcam
[7] https://github.com/spatie/laravel-data/discussions/470
[8] https://stackoverflow.com/questions/72186973/checking-for-user-permissions-with-spatie-cackage-brails-in-routes-and-in-control
[9] https://spatie.be/docs/laravel-model-stats/v2/request-validation/01-state-validation-rule