Article image
Matheus Deus
Matheus Deus28/06/2026 08:47
Share

Full Stack com IA: Como Proteger Sua API Key e Construir Projetos Prontos para Produção

    O erro que 90% dos iniciantes cometem ao integrar IA em aplicações web — e como evitá-lo com arquitetura profissional

    image

    Introdução

    Você acabou de aprender a usar a API da OpenAI. Consegui fazer o chatbot responder. Funciona localmente. E agora? Hora de colocar no ar e mostrar ao mundo, certo?

    Errado.

    Antes de apertar o botão de implantação, existe uma pergunta que separa projetos amadores de portfólios profissionais:

    Onde está sua chave de API agora?

    Se a resposta para "no meu código JavaScript do frontend", você é um Ctrl+Shift+Ide ter sua conta drenada por alguém do outro lado do mundo.

    Este artigo é um guia prático, passo a passo, para construir aplicações Full Stack com IA de forma segura, profissional e pronta para produção . Não é teoria — é o que eu apliquei no meu próprio projeto de desafio da DIO.

    O que você vai aprender:

    • ✅ Por que uma API Key nunca deve ficar no frontend
    • ✅ Como separar frontend e backend corretamente
    • ✅ Uso correto de variáveis ​​de ambiente
    • ✅ Proteção com limitação de taxa
    • ✅ Implantar profissional (Ferrovia + Vercel)
    • ✅ Como transformar um projeto em portfólio

    1. O problema: uma exposição de chave de API

    Cenário real

    Imagine: você está animado. O chatbot funciona. Você faz implantar no Vercel. Manda o link para um amigo testar. Ele testa. Funciona. Ótimo.

    Mas o que ele (e qualquer pessoa) pode fazer em segundos:

    1. Apertar F12→ Rede aba
    2. Enviar uma mensagem no seu chat
    3. Ver a requisição paraapi.openai.com
    4. Leia sua chave de API sem cabeçalhoAuthorization
    Authorization: Bearer sk-su4per-secr3t-key-exposed-12345
    

    Consequências do vazamento

    ProblemaImpactoUso indevidousa sua chave → você paga a contaDrenagem financeiraRequisições em massa = custo exponencialRevogação de acessoOpenAI pode banir sua contaDados comprometidosSeus prompts e dados expostos

    ⚠️ Alerta : Em um teste de segurança, pesquisadores encontraram mais de 10.000 chaves de API expostas publicamente no GitHub em apenas um dia.

    2. Arquitetura Segura: Frontend vs Backend

    O fluxo errado (comum entre iniciantes)

    Usuário → Frontend → OpenAI API (com API key exposta)
    

    O fluxo correto (profissional)

    Usuário → Frontend → Backend (seguro, com API key) → OpenAI API
    

    Por que?

    Front-endBackendCódigo visível ao usuárioCódigo inacessível ao usuárioNão pode ter segredosÉ o único lugar para segredosReact, Vue, AngularNode.js, Python, GoImplante o Vercel/Netlify.Implantar sem Railway/Heroku

    Regras de ouro : Uma chave de API vive exclusivamente no servidor. O frontend nunca a toca.

    Diagrama da arquitetura segura

    image

    image

    3. Implementação: Variáveis ​​de Ambiente

    O que são?

    Variáveis ​​de ambiente são configurações que ficam fora do código . O arquivo .envarmazena segredos que o código lê em tempo de execução.

    Como configurar

    1. Crie o arquivo .envno backend:

    # server/.env
    OPENAI_API_KEY=sk-sua-chave-aqui
    OPENAI_MODEL=gpt-3.5-turbo
    PORT=5000
    

    2. Carregue no código:

    require('dotenv').config();
    
    const openai = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY, // Segura!
    });
    

    3. Commit do NUNCA no GitHub:

    # .gitignore
    .env
    .env.local
    

    image

    ⚠️ NUNCA faz isso :
    // ❌ ERRADO - expõe a key no frontend
    const apiKey = 'sk-sua-chave-real-aqui';
    

    4. Proteção Contra Abuso: Limitação de Taxa

    Por que limite de taxa?

    Mesmo com uma chave no backend, se alguém descobrir seu endpoint público, poderá fazer milhares de requisições e esvaziar sua conta.

    Implementação simples (Node.js)

    const rateLimit = new Map();
    
    const rateLimitMiddleware = (req, res, next) => {
    const ip = req.ip;
    const now = Date.now();
    const window = 60000; // 1 minuto
    const max = 30; // 30 requisições
    
    if (!rateLimit.has(ip)) {
      rateLimit.set(ip, { count: 1, start: now });
      return next();
    }
    
    const data = rateLimit.get(ip);
    if (now - data.start > window) {
      data.count = 1;
      data.start = now;
      return next();
    }
    
    if (data.count >= max) {
      return res.status(429).json({
        error: 'Limite atingido',
        details: 'Máximo 30 requisições/minuto.'
      });
    }
    
    data.count++;
    next();
    };
    
    app.post('/api/chat', rateLimitMiddleware, async (req, res) => {
    // ...
    });
    
    💡 Dica : Em produção com múltiplos servidores, use Redis ou express-rate-limitpara persistência.

    5. Implantar Profissional

    Backend sem ferrovia

    1. Acesse https://railway.app
    2. Conecte seu repositório GitHub
    3. Adicione as variáveis ​​de ambiente no dashboard
    4. Implantar automaticamente a cada push

    Frontend sem Vercel

    1. Acesse https://vercel.com
    2. Importe seu repositório
    3. Configurar VITE_API_URLdirecionamento para o Railway
    4. Implantar com um clique

    CORS configurado

    app.use(cors({
    origin: process.env.FRONTEND_URL || '*',
    methods: ['GET', 'POST'],
    }));
    

    image

    6. Do Projeto ao Portfólio

    README profissional

    • Banner visual sem topo
    • Distintivos de tecnologia
    • Capturas de tela do projeto funcionando
    • Link para implantação
    • de instalação
    • Estrutura de massas

    image

    LinkedIn

    Poste com:

    • Imagem do projeto
    • Explicação técnica breve
    • Link do
    • O que você escalou

    Entrevistas técnicas

    Ao perguntar sobre o projeto, você pode falar:

    "Implementei arquitetura separada com backend seguro, variáveis ​​de ambiente, rate limiting e deploy em produção."

    7. Lista de verificação de segurança

    • A chave da API está no .envbackend
    •  .envestá no.gitignore
    • Frontend nunca acesse o OpenAI diretamente
    • Backend valida a entrada antes de enviar
    • Limitação de taxa
    • CORS configurado
    • Implantação separada (frontend ≠ backend)
    • Limite rígido de gastos na OpenAI configurado
    • README profissional com capturas de tela
    • Repositório organizado e documentado

    Conclusão

    A diferença entre um "projeto que funciona no meu PC" e um "portfólio profissional" é nos detalhes que ninguém vê — mas que todo recrutador nota.

    Segurança não é um "extra". É obrigatório .

    Arquitetura separada não é "complicada". É profissionalismo .

    Implantar não é a última etapa. É onde o projeto ganha vida .

    Chamada à ação

    🚀 Veja o projeto funcionando: https://chatgpt-clone-dio-git-main-matheusflorindo32s-projects.vercel.app/

    📁 Acesse o repositório: dio-artigo-ia-fullstack-seguro

    💼 Conecte-se comigo no LinkedIn: https://www.linkedin.com/in/matheus-florindo-de-deus-b953b017a/

    💬 O que você está construindo com IA? Compartilhe nos comentários!

    Sobre o Autor

    Matheus Florindo — Desenvolvedor em formação | Projetos com IA | Pilha completa | Portfólio DIO

    Construindo projetos reais para aprender de verdade.

    Share
    Comments (0)