> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Lista de verificação de segurança

> Siga esta lista de verificação de segurança abrangente para garantir que seus aplicativos vibe coded sigam as melhores práticas de segurança.

Este guia fornece uma lista de verificação de segurança abrangente para garantir que seus aplicativos vibe coded sigam as melhores práticas de segurança.

Embora o Replit ofereça muitos recursos de segurança [prontos para uso](/references/security/overview), é importante entender e implementar medidas de segurança adicionais para as necessidades específicas da sua aplicação.

<iframe src="https://www.youtube.com/embed/0D9FMFyNBWo" title="Vibe code security checklist" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />

## Pré-requisitos

* Uma conta Replit
* Conhecimento básico da sua linguagem de programação preferida
* Familiaridade com o Editor de Projeto
* Um aplicativo que você está desenvolvendo no Replit

## Segurança no front-end

<AccordionGroup>
  <Accordion title="HTTPS em todo lugar" icon="lock">
    O Replit usa HTTPS por padrão em todos os aplicativos. Portanto, você não precisa se preocupar com isso!
  </Accordion>

  <Accordion title="Validação e sanitização de entrada" icon="shield-check">
    Sempre valide e sanitize a entrada do usuário para prevenir ataques de cross-site scripting (XSS):

    ```javascript theme={null}
    // Ruim: Uso direto da entrada do usuário
    element.innerHTML = userInput;

    // Bom: Sanitize a entrada antes de usar
    import { sanitize } from 'some-sanitizer-library';
    element.innerHTML = sanitize(userInput);
    ```

    Mude para o [modo Lite](/references/agent/agent-modes) e pergunte ao Agent:

    ```
    Help me validate and sanitize inputs to protect against XSS attacks
    ```
  </Accordion>

  <Accordion title="Mantenha dados sensíveis fora do navegador" icon="eye-slash">
    Você deve usar os Secrets do Replit para armazenar informações sensíveis como chaves de API.

    Certifique-se de não passar segredos para o lado cliente nem colocá-los nos seguintes lugares:

    * Local storage
    * Session storage
    * JavaScript no lado cliente
    * Cookies sem atributos de segurança adequados

    Mude para o [modo Lite](/references/agent/agent-modes) e pergunte ao Agent:

    ```
    Help me keep sensitive data out of the browser. Am I doing this correctly?
    ```
  </Accordion>

  <Accordion title="Proteção CSRF" icon="shield">
    Implemente proteção contra Cross-Site Request Forgery (CSRF) para formulários:

    ```javascript theme={null}
    // Exemplo de implementação de token CSRF
    const csrfToken = generateToken();
    session.csrfToken = csrfToken;
    ```

    Mude para o [modo Lite](/references/agent/agent-modes) e pergunte ao Agent:

    ```
    Help me implement CSRF tokens for forms
    ```
  </Accordion>
</AccordionGroup>

## Segurança no back-end

<AccordionGroup>
  <Accordion title="Fundamentos de autenticação" icon="key">
    Ao implementar autenticação:

    * Use o Replit Auth sempre que possível
    * Se estiver criando autenticação personalizada, use bibliotecas estabelecidas
    * Nunca armazene senhas em texto simples

    Pergunte ao Agent:

    ```
    Help me implement authentication for my application with Replit Auth
    ```
  </Accordion>

  <Accordion title="Verificações de autorização" icon="user-lock">
    Sempre verifique permissões antes de realizar ações:

    ```javascript theme={null}
    // Exemplo de verificação de autorização
    if (!user.canAccess(resource)) {
      return res.status(403).send('Access denied');
    }
    ```

    Pergunte ao Agent:

    ```
    Help me implement authorization checks for my application
    ```
  </Accordion>

  <Accordion title="Proteção de endpoints de API" icon="shield">
    Proteja seus endpoints de API:

    * Adicione autenticação a endpoints sensíveis
    * Implemente configurações CORS adequadas
    * Considere implementar rate limiting

    Mude para o [modo Lite](/references/agent/agent-modes) e pergunte ao Agent:

    ```
    How do I properly authenticate endpoints in my app?
    ```
  </Accordion>

  <Accordion title="Prevenção de injeção SQL" icon="database">
    O Agent usa ORMs por padrão, o que ajuda a prevenir injeção SQL. Se estiver escrevendo consultas de banco de dados personalizadas:

    ```javascript theme={null}
    // Ruim: Concatenação de strings em consultas
    db.query(`SELECT * FROM users WHERE username = '${username}'`);

    // Bom: Consultas parametrizadas com ORM
    db.query('SELECT * FROM users WHERE username = ?', [username]);
    ```
  </Accordion>

  <Accordion title="Cabeçalhos de segurança" icon="code">
    Adicione cabeçalhos de segurança importantes à sua aplicação:

    ```html theme={null}
    <!-- No index.html ou através do seu back-end -->
    <meta http-equiv="X-Frame-Options" content="DENY">
    <meta http-equiv="X-Content-Type-Options" content="nosniff">
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'">
    ```

    Você pode escanear seu site em [securityheaders.com](https://securityheaders.com) para recomendações.

    Mude para o [modo Lite](/references/agent/agent-modes) e pergunte ao Agent:

    ```
    Can you add the security headers to my application?
    ```
  </Accordion>
</AccordionGroup>

## Práticas contínuas de segurança

<AccordionGroup>
  <Accordion title="Mantenha as dependências atualizadas" icon="arrow-rotate-right">
    Verifique regularmente se há pacotes desatualizados que podem ter vulnerabilidades:

    ```bash theme={null}
    npm audit
    ```
  </Accordion>

  <Accordion title="Tratamento adequado de erros" icon="exclamation">
    Não exponha informações sensíveis em mensagens de erro:

    ```javascript theme={null}
    // Ruim: Expondo detalhes sensíveis
    catch (err) {
      res.status(500).send(`Database error: ${err.message}`);
    }

    // Bom: Mensagem de erro genérica
    catch (err) {
      console.error(err); // Log interno
      res.status(500).send('An error occurred');
    }
    ```

    Pergunte ao Agent:

    ```
    Help me implement proper error handling for my application
    ```
  </Accordion>

  <Accordion title="Cookies seguros" icon="cookie">
    Ao usar cookies:

    * Defina a flag HttpOnly para prevenir acesso via JavaScript
    * Use o atributo Secure para exigir HTTPS
    * Implemente o atributo SameSite para prevenir CSRF

    Pergunte ao Agent:

    ```
    Help me secure my cookies for my application
    ```
  </Accordion>

  <Accordion title="Segurança no upload de arquivos" icon="upload">
    Se sua aplicação permite upload de arquivos:

    * Restrinja tipos e tamanhos de arquivo
    * Escaneie em busca de malware quando possível
    * Armazene arquivos no armazenamento de objetos do Replit
    * Gere novos nomes de arquivo em vez de usar os fornecidos pelo usuário

    Pergunte ao Agent:

    ```
    Help me secure my file uploads for my application
    ```
  </Accordion>

  <Accordion title="Rate limiting" icon="clock">
    Implemente rate limiting para endpoints de API, especialmente os relacionados à autenticação:

    ```javascript theme={null}
    // Exemplo de middleware de rate limiting
    const rateLimit = require('express-rate-limit');

    const limiter = rateLimit({
      windowMs: 15 * 60 * 1000, // 15 minutos
      max: 100 // limite de 100 requisições por IP a cada windowMs
    });

    app.use('/api/', limiter);
    ```

    Pergunte ao Agent:

    ```
    Help me implement rate limiting for my application
    ```
  </Accordion>
</AccordionGroup>

## Lista de verificação

Aqui está o resumo acima em formato de lista de verificação para ajudá-lo a acompanhar suas práticas de segurança.

## Segurança no front-end

|   | Medida de segurança                        | Descrição                                                                     |
| - | ------------------------------------------ | ----------------------------------------------------------------------------- |
| ☐ | Usar HTTPS em todo lugar                   | Previne interceptação básica e ataques man-in-the-middle                      |
| ☐ | Validação e sanitização de entrada         | Previne ataques XSS ao validar todas as entradas do usuário                   |
| ☐ | Não armazenar dados sensíveis no navegador | Sem segredos no local storage ou código do lado cliente                       |
| ☐ | Proteção CSRF                              | Implemente tokens anti-CSRF para formulários e requisições que alteram estado |
| ☐ | Nunca expor chaves de API no front-end     | Credenciais de API devem sempre permanecer no lado servidor                   |

## Segurança no back-end

|   | Medida de segurança             | Descrição                                                                         |
| - | ------------------------------- | --------------------------------------------------------------------------------- |
| ☐ | Fundamentos de autenticação     | Use bibliotecas estabelecidas, armazenamento adequado de senhas (hashing+salting) |
| ☐ | Verificações de autorização     | Sempre verifique permissões antes de realizar ações                               |
| ☐ | Proteção de endpoints de API    | Implemente autenticação adequada para cada endpoint de API                        |
| ☐ | Prevenção de injeção SQL        | Use consultas parametrizadas ou ORMs, nunca SQL bruto com entrada do usuário      |
| ☐ | Cabeçalhos de segurança básicos | Implemente X-Frame-Options, X-Content-Type-Options e HSTS                         |
| ☐ | Proteção DDoS                   | Use um CDN ou serviço de nuvem com recursos de mitigação DDoS integrados          |

## Hábitos práticos de segurança

|   | Medida de segurança             | Descrição                                                                             |
| - | ------------------------------- | ------------------------------------------------------------------------------------- |
| ☐ | Manter dependências atualizadas | A maioria das vulnerabilidades vem de bibliotecas desatualizadas                      |
| ☐ | Tratamento adequado de erros    | Não exponha detalhes sensíveis em mensagens de erro                                   |
| ☐ | Cookies seguros                 | Defina os atributos HttpOnly, Secure e SameSite                                       |
| ☐ | Segurança no upload de arquivos | Valide tipos e tamanhos de arquivo e escaneie conteúdo malicioso                      |
| ☐ | Rate limiting                   | Implemente em todos os endpoints de API, especialmente os relacionados à autenticação |
