Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como ficaria se eu quisesse deixa os dados protegidos, como faziamos nos cursos anteriores?

Exemplo: self._nome = nome

1 resposta
solução!

Oi Eduardo! Tudo be?

Para proteger os dados no Flask, assim como fizemos em cursos anteriores, podemos usar a convenção de prefixar atributos com um sublinhado para indicar que eles são "privados" ou "protegidos". No entanto, essa prática é mais uma convenção do que uma restrição real em Python, já que esses atributos ainda podem ser acessados externamente se necessário.

No contexto de uma aplicação Flask que interage com um banco de dados, a proteção dos dados geralmente envolve mais do que apenas a manipulação de atributos de classe. Aqui estão algumas dicas para proteger os dados:

  1. Usar ORM para abstração de banco de dados: Ao usar SQLAlchemy, por exemplo, você pode definir modelos que representam suas tabelas no banco de dados. Isso ajuda a encapsular a lógica de acesso aos dados.

  2. Validação de dados: Sempre valide os dados de entrada antes de processá-los ou armazená-los no banco de dados. Isso pode ser feito usando bibliotecas como WTForms ou Marshmallow.

  3. Autenticação e autorização: Certifique-se de que apenas usuários autenticados possam acessar certas rotas ou dados. Flask-Security ou Flask-Login são boas opções para implementar isso.

  4. Proteção contra CSRF: Use tokens CSRF para proteger suas rotas que aceitam métodos POST, PUT ou DELETE. O Flask-WTF pode ajudar com isso.

  5. Criptografia de dados sensíveis: Para dados sensíveis, como senhas, use hash seguro (como bcrypt) antes de armazená-los no banco de dados.

Por exemplo, se você tem um modelo de usuário, poderia parecer algo assim:

from werkzeug.security import generate_password_hash, check_password_hash

class Usuario(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    _nome = db.Column(db.String(150), nullable=False)
    _senha_hash = db.Column(db.String(128), nullable=False)

    def __init__(self, nome, senha):
        self._nome = nome
        self._senha_hash = generate_password_hash(senha)

    def verificar_senha(self, senha):
        return check_password_hash(self._senha_hash, senha)

Neste exemplo, _nome e _senha_hash são atributos "protegidos" e a senha é armazenada de forma segura. Não se preocupe em tentar implementar isso por agora, em aulas futuras você verá isso de forma mais detalhada por parte do instrutor.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.