Skip to content

Sanitização causa validação errônea quando a input possue letras #121

Closed
@ptsilva

Description

@ptsilva

Veja um caso de duas inputs que são aplicadas a regra de validação para CNH:

$cnh_valido = '43872153406';
$cnh_invalido = 'ZZZ43872153406'

Ambos passam na validação, pois a chamada do método sanitize:

public function sanitize($value): string
    {
        return empty($value) ? "" : preg_replace('/[^\d]/', '', $value);
    }

$value = $this->sanitize($value);

O sanitize altera o valor antes da valiação, porém, como ele não altera o próprio request (e nem faz sentido), a aplicação identifica como válido um valor que na verdade é inválido.
Testei com CNH, mas com certeza deve ocorrer em todas as Rules que também utilizam o sanitize.

A correção é simples, a validação deve ser feita em cima da input bruta e não deve haver nenhuma transformação antes da validação.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions