Revisão de código focada em segurançaTreinamento em programação

Revisão de código focada em pontos fracos de segurança

Entrega a partir de 1 diaAjustes incluídosControle de qualidade
Pacotes
Pagamento protegidoDetalhes
  • Os ajustes previstos no pacote são gratuitos.
  • Se você não responder em 3 dias após a entrega, o trabalho é aprovado automaticamente.
Fazer pedido · US$ 35

O dinheiro fica reservado no pagamento e só é liberado quando você aprova o trabalho.

Revisão de código focada em pontos fracos de segurança

Exemplo de resultado

Exemplo do pacote Padrão

Revisão de código: script em Python para importar pedidos de uma loja virtual

O que o código faz

  1. Lê o orders.csv exportado da loja.
  2. Para cada item do pedido, procura o produto pelo SKU no stock.xlsx e subtrai a quantidade.
  3. Grava o estoque atualizado e registra os totais em import_log.txt.

A estrutura é clara e as funções têm bons nomes. A maioria dos problemas vem de dados de entrada que não chegam no formato que o script espera.

Bugs e pontos fracos

#LinhaGravidadeProblema
148AltaO mesmo CSV pode ser importado duas vezes; não há checagem dos IDs de pedido já processados. É a causa mais provável do estoque negativo.
272Altaint(row["qty"]) quebra com valores vazios ou "2.0" de pedidos reembolsados.
395MédiaA busca por SKU diferencia maiúsculas: "gt-101" e "GT-101" viram produtos diferentes.
4130MédiaO arquivo é aberto sem encoding="utf-8", então nomes com acento quebram no Windows.
5201BaixaUm except: genérico esconde os erros reais e deixa o log inútil.

Trechos corrigidos

Problema 1: pular pedidos já importados

processed = load_processed_ids("processed_orders.txt")
for row in reader:
    if row["order_id"] in processed:
        continue
    # ... lógica existente ...
    processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)

Por quê: cada pedido é aplicado uma única vez, mesmo que você rode o script de novo com o mesmo arquivo.

Problema 2: ler a quantidade com segurança

raw = (row.get("qty") or "").strip()
try:
    qty = int(float(raw))
except ValueError:
    log.warning("Pedido %s: quantidade inválida %r, ignorado", row["order_id"], raw)
    continue

Por quê: itens reembolsados ou parciais são pulados com um aviso claro, em vez de interromper toda a importação.

Problema 3: padronizar os SKUs

sku = row["sku"].strip().upper()

Aplique o mesmo .strip().upper() ao montar o dicionário de estoque.

Estilo e legibilidade

  • process() tem 90 linhas; divida em read_orders, apply_to_stock e write_report.
  • Troque os números de coluna "mágicos" (row[7]) pelos nomes dos cabeçalhos.

Teste cada correção em uma cópia dos seus arquivos: lemos o código, mas não o executamos.

Cliente: dona de uma loja de chás que escreveu um script em Python de 310 linhas para importar os pedidos de um CSV exportado para a planilha de estoque Problema relatado: "Às vezes o estoque fica negativo, e o script trava com alguns arquivos."

O cliente e todos os dados são fictícios.

Sobre este serviço

Muitas falhas de segurança estão visíveis no próprio código: comandos SQL ou de shell montados a partir da entrada do usuário, saída impressa sem escape, senhas guardadas com um hash rápido, verificações que confirmam quem é o usuário mas não o que ele pode acessar, e chaves escritas no código-fonte. Lemos o seu código com o OWASP Top 10 como checklist, explicamos cada ponto fraco e como ele poderia ser explorado, e ordenamos por risco. Cada achado vem com um fragmento corrigido usando o padrão seguro da sua linguagem.

O que está incluído

  • O que você recebeUma revisão escrita na página do pedido: pontos fracos ordenados por risco, com uma explicação de cada um, e fragmentos corrigidos usando padrões seguros. O Premium inclui um checklist curto de reforço de segurança para o resto do projeto.
  • InjeçãoInjeção de SQL, shell e template
  • Escape da saídaRiscos de cross-site scripting
  • Controle de acessoQuem pode ver e alterar o quê
  • Senhas e segredosHashing e chaves fora do código
  • Achados por prioridadeCorrija primeiro o pior

Como funciona

  1. 1
    BriefingVocê cola as partes sensíveis do código
  2. 2
    LeituraComparamos com o OWASP Top 10
  3. 3
    RevisãoVocê recebe achados ordenados e correções

O que precisamos de você

O código que lida com entradas, logins, arquivos ou pagamentos colado como texto ou em capturas de tela, com os segredos substituídos por marcadores, a linguagem e o framework, e quem usa o app.

Vamos perguntar:

  • Qual linguagem e qual framework?
  • Quais partes lidam com entrada do usuário, logins ou pagamentos?
  • Quem usa o app?
  • Algum incidente ou alerta específico motivou esta revisão?

Compare os pacotes

PacotesBásicoCódigo de até 100 linhasUS$ 15PadrãoCódigo de até 400 linhasUS$ 35PremiumAté 1.000 linhas com checklist de reforçoUS$ 69
Prazo1 dia2 dias3 dias
Ajustes123
Linhas de códigoaté 100até 400até 1.000
Fragmentos corrigidosSimSimSim
Checklist de reforço de segurançaNãoNãoSim
Fazer pedido BásicoFazer pedido PadrãoFazer pedido Premium

Pagamento protegido

Você paga ao fazer o pedido, mas o dinheiro só é liberado pelo trabalho aprovado.

  • Preço fixoO preço do pacote não muda depois que você paga.
  • O dinheiro fica reservadoAo pagar, o valor fica apenas reservado. Ele só é repassado quando você aprova o trabalho.
  • Verificado antes da entregaCada resultado passa por um controle de qualidade antes de chegar até você, e você o vê na página do pedido antes de aprovar.
  • Ajustes gratuitosPeça ajustes dentro do seu briefing quantas vezes o pacote permitir.
  • Aprovação após 3 diasSe em 3 dias após a entrega você não aprovar o trabalho nem pedir ajustes, ele é aprovado automaticamente. Se você escrever no chat do pedido após a entrega, o pedido fica em espera; depois que respondermos, podemos reiniciar a contagem de 3 dias e avisaremos no chat.
  • Refazer ou reembolso totalSe o resultado não corresponder ao seu briefing e os ajustes não resolverem, ou se o trabalho levar mais que o dobro do prazo, escreva no chat do pedido: refazemos o trabalho ou reembolsamos o pagamento integralmente.
Como funciona →

Perguntas e respostas

Isto é um teste de invasão ou um certificado de segurança?

Não. Lemos o código que você envia e não atacamos nem escaneamos o seu sistema no ar, então isto não substitui uma auditoria formal quando ela for exigida.

Devo enviar senhas ou chaves?

Nunca. Substitua-as por marcadores; se uma chave real já estava no código, troque-a.

Vocês executam o meu código?

Não. Lemos o código com atenção e analisamos como ele se comporta, mas não o executamos, então teste cada correção sugerida no seu próprio projeto.

Pacotes
Fazer pedido · US$ 35· 2 dias