mateusjunges / laravel-pix

Uma solucão simples para integrar sua aplicação Laravel a API PIX do Banco Central do Brasil
MIT License
104 stars 32 forks source link

Falta de validação entrada #16

Open mrfelpa opened 1 year ago

mrfelpa commented 1 year ago

Fala dev beleza?

Cara seria interessante validar parâmetro $type em relação a um conjunto predefinido de tipos de chave antes de usá-lo, isso ajuda evitar possíveis vulnerabilidades de segurança, como injeção de código.

Por exemplo:

class Validator implements PerformKeyValidations { const ALLOWED_KEY_TYPES = [ Pix::RANDOM_KEY_TYPE, Pix::CPF_KEY_TYPE, Pix::CNPJ_KEY_TYPE, Pix::EMAIL_KEY_TYPE, Pix::PHONE_NUMBER_KEY_TYPE, ];

public static function validate(string $type, string $key): bool
{
    if (!in_array($type, self::ALLOWED_KEY_TYPES)) {
        throw InvalidPixKeyException::invalidKeyType($type);
    }

    switch ($type) {
        case Pix::RANDOM_KEY_TYPE:
            return self::validateRandom($key);
        case Pix::CPF_KEY_TYPE:
            return self::validateCPF($key);
        case Pix::CNPJ_KEY_TYPE:
            return self::validateCnpj($key);
        case Pix::EMAIL_KEY_TYPE:
            return self::validateEmail($key);
        case Pix::PHONE_NUMBER_KEY_TYPE:
            return self::validatePhoneNumber($key);
        default:
            throw InvalidPixKeyException::invalidKeyType($type);
    }
}

}

Adicionei um array constante chamado ALLOWED_KEY_TYPES, que contém todos os tipos de chave válidos. Quando o método de validação é chamado, ele primeiro verifica se o $type fornecido está presente na lista de tipos de chave permitidos. Caso contrário, ele lança uma InvalidPixKeyException para tratar adequadamente a entrada inválida. Isso permite que apenas chaves legítimas sejam aceitas para validação.