Este documento descreve as políticas de segurança implementadas no projeto Kachat.
- O sistema utiliza Supabase Auth para gerenciamento de sessões
- Usuários devem confirmar email antes de fazer login
- Tokens JWT são usados para autenticação de requisições
Todas as tabelas possuem políticas RLS ativas:
| Tabela | SELECT | INSERT | UPDATE | DELETE |
|---|---|---|---|---|
profiles |
Público | Próprio perfil | Próprio perfil | - |
groups |
Público | Dono apenas | Dono/Admins | Dono apenas |
group_members |
Público | Dono/Admins | - | Membro/Admin |
group_messages |
Membros | Membros | Sender/Admins | Sender apenas |
direct_messages |
Sender/Receiver | Autenticado | Sender apenas | Sender apenas |
| Campo | Limite | Local |
|---|---|---|
| Mensagem | 10.000 chars | Frontend + Database |
| Nome de usuário | 50 chars | Frontend + Database |
| Nome de grupo | 100 chars | Frontend + Database |
| Descrição grupo | 500 chars | Frontend + Database |
| Arquivo upload | 100MB | Frontend + RLS |
- Apenas protocolos
httpehttpssão permitidos - URLs com
javascript:,data:,vbscript:são bloqueadas - Implementado no
markdownParser.jsx
| Bucket | Tamanho Máximo | Tipos Permitidos |
|---|---|---|
avatars |
5MB | jpeg, png, webp |
chat-files |
100MB | Todos (com validação client-side) |
- Executáveis (.exe, .sh, .bat, .cmd, .msi)
- Scripts (.js, .php, .asp, .cgi)
- Sistemas (.dll, .so, .dylib)
- Todo HTML em mensagens é escapado antes da renderização
- Função
escapeHtml()aplicada no markdown parser - Links abrem em nova aba com
rel="noopener noreferrer"
- Queries feitas via cliente Supabase usam parameterized queries
- Não há concatenação de strings em queries SQL
- Supabase usa tokens JWT no header Authorization
- Tokens são validados automaticamente pelo Supabase
O projeto requer as seguintes variáveis de ambiente:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=your-anon-keyNota: O arquivo .env deve ser criado localmente e NUNCA deve ser commitado. Use .env.example como template.
Ao adicionar novas funcionalidades, verifique:
- Não expor dados sensíveis no frontend
- Validar input do usuário
- Verificar permissões RLS para novas tabelas
- Usar parameterized queries (não concatenar strings)
- Sanitizar HTML antes de renderizar
- Validar tipos de arquivo em uploads
- Não commitar secrets ou chaves
Se encontrar uma vulnerabilidade de segurança, por favor:
- Não divulgue publicamente
- Entre em contato com a equipe de desenvolvimento
- Forneça detalhes sobre a vulnerabilidade descoberta
| Versão | Data | Descrição |
|---|---|---|
| 1.0.0 | 2026-05-08 | Versão inicial com políticas básicas |
Este documento deve ser atualizado sempre que novas políticas de segurança forem implementadas.