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.
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.
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, ];
}
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.