Skip to content
This repository has been archived by the owner on Oct 20, 2023. It is now read-only.

Falta de validação entrada #16

Open
mrfelpa opened this issue Aug 25, 2023 · 0 comments
Open

Falta de validação entrada #16

mrfelpa opened this issue Aug 25, 2023 · 0 comments

Comments

@mrfelpa
Copy link

mrfelpa commented Aug 25, 2023

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.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant