Escrevendo testes e protegendo código com IA

Codificação com IA para Desenvolvedores

Francesca Donadoni

AI Curriculum Manager, DataCamp

Prompt orientado a testes

☺ Prompt Normal

Escreva uma função Python para analisar endereços de e-mail.

🤓 Prompt Orientado a Testes

Escreva uma função Python para analisar endereços de e-mail. Ela deve passar nos seguintes testes:

  • Aceita um endereço válido como "[email protected]".
  • Rejeita entrada inválida como "user@@domain".
  • Lança um ValueError para entrada vazia.
Codificação com IA para Desenvolvedores

Prompt orientado a testes

  • Prompt do usuário: Gere testes unitários em Python para uma função que processa dados de formulário enviados pelo usuário e os insere em um banco de dados SQL.

  • Resposta do modelo:

Aqui está uma suíte pytest pronta para rodar que cobre validação, normalização, segurança contra injeção SQL e comportamento de transação para uma função que processa dados de formulário e insere um registro em um banco de dados SQL.

---------- Test DB fixtures ----------

@pytest.fixture() def conn(): """Banco de dados SQLite em memória com uma tabela de usuários.""" c = sqlite3.connect(":memory:") [...]

Codificação com IA para Desenvolvedores

Prompt orientado a testes

  • Prompt do usuário: Gere testes unitários em Python usando pytest para a função a seguir. Inclua casos para entrada vazia, palavras-chave SQL na entrada e caracteres especiais. Assuma uma conexão de banco de dados simulada. <INSERT FUNCTION>

  • Resposta do modelo:

Aqui está um módulo de teste pytest autônomo que usa mocks (sem DB real) e cobre entrada vazia, palavras-chave SQL e caracteres especiais. Também verifica o comportamento de commit/close e que exceções são tratadas.

Codificação com IA para Desenvolvedores

Prompting para segurança

☺ Prompt Normal

$$

Analise a função Python a seguir para possíveis vulnerabilidades e sugira alternativas mais seguras, se houver.

🤓 Prompt Orientado a Testes

$$

Revise este código para problemas comuns de segurança na web, incluindo injeção SQL, XSS e falhas de validação de entrada.

Codificação com IA para Desenvolvedores

OWASP Top 10

owasp_top_10.png

Codificação com IA para Desenvolvedores

OWASP Top 10

  • Prompt do usuário: Audite a função a seguir para vulnerabilidades do OWASP Top 10.
def login(username, password):
   query = f"SELECT * FROM users WHERE username = '{username}' \
           AND password = '{password}'"
   result = db.execute(query)
   return result.fetchone()
  • Resposta do modelo:

Aqui está uma auditoria focada no OWASP Top 10 da sua função de login, além de uma reescrita mais segura.

  1. A03: Injeção. Interpolação direta de strings no SQL torna isso facilmente injetável. Exemplos de payloads:
    • username = "admin' --" → ignora a verificação de senha. [...]
Codificação com IA para Desenvolvedores

Vamos praticar!

Codificação com IA para Desenvolvedores

Preparing Video For Download...