Aplicação corporativa de comunicação — projeto acadêmico revisitado e submetido a uma auditoria completa de segurança.
![]() |
![]() |
| Página principal | Conteúdo sobre autenticação de dois fatores (2FA) |
![]() |
|
| Conteúdo sobre CPaaS |
As páginas que dependem de login e do banco de dados (cadastro, edição, PDF, SMS programável) não aparecem aqui porque exigem o MySQL em execução.
O Telecall nasceu como projeto acadêmico em grupo (PHP + MySQL, comunicação empresarial: SMS programável, geração de PDF, cadastro/login). Meses depois, revisitei o código sozinho, já com outro olhar — o de quem entende os riscos reais de uma aplicação web — e conduzi uma auditoria e remediação completa de segurança, documentada abaixo.
| Vulnerabilidade encontrada | Correção aplicada |
|---|---|
| Consultas SQL montadas por concatenação de string | Migrado para prepared statements (mysqli) em todo o cadastro, login, edição e exclusão de dados |
| Senhas armazenadas em texto puro | Hash com bcrypt (password_hash / password_verify) |
| Credenciais de banco versionadas no código | Removidas do histórico; config.php documentado para uso de variáveis de ambiente em produção |
| Falhas de controle de sessão | Revisão do fluxo de login/logout e checagem de sessão nas páginas protegidas |
| Possível IDOR (acesso a registros de outros usuários via ID na URL) | Validação de propriedade do recurso antes de editar/excluir |
A aplicação foi publicada em ambiente cloud AWS (EC2 + Apache) para fins de demonstração:
https://telecallpizzanet.s3.us-east-1.amazonaws.com/Pagina+principal/index.html
O deploy é mantido apenas para demonstração, por conta do custo recorrente da infraestrutura.
Backend: PHP · Banco: MySQL · Frontend: HTML5, CSS3, JavaScript · Cloud: AWS EC2, Apache · Libs: DOMPDF
- Cadastro e login de usuários (senha com hash bcrypt)
- Edição e exclusão de dados com verificação de propriedade do recurso
- Alteração de senha (a nova senha também é gravada com hash bcrypt)
- Geração dinâmica de PDF (DOMPDF)
- Sistema de SMS programável
- Páginas institucionais dos produtos de comunicação: SMS programável, 2FA, CPaaS e Google Verified Calls
- Estrutura modular, separando páginas, PDF e SMS em módulos próprios
BD/
└── bdtelecall.sql # schema do banco
Telas/
├── config.php # conexão com o banco (env vars documentadas p/ produção)
├── Tela de login/
├── Tela de cadastro/
├── Editar/
├── Alterar Senha/ # troca de senha
├── PDF/ # geração de PDF (dependências via Composer em PDF/dompdf)
├── smsprogramavel/
├── 2fa/, cpaas/, gvc/ # páginas dos produtos (2FA, CPaaS, Google Verified Calls)
└── nav/, footer/, img/ # componentes e imagens compartilhados
git clone https://github.com/MatheusAnsel/ConnectCall.git- Instale XAMPP ou Laragon
- Mova a pasta do projeto para
htdocs - Instale as dependências do PDF (requer Composer):
cd Telas/PDF/dompdf && composer install
- Abra o phpMyAdmin e importe
BD/bdtelecall.sql - Ajuste
Telas/config.phpcom as credenciais do seu banco local - Acesse
http://localhost/ConnectCall
O workflow em .github/workflows/ci.yml roda a cada push e pull request e protege o que a auditoria corrigiu:
- Sintaxe de todos os arquivos PHP próprios (o dompdf, de terceiros, fica de fora).
- Nenhum SQL montado por concatenação: a build falha se aparecer
query()direta ou uma consulta com variável interpolada. Toda consulta deve usarprepare()com parâmetros. - Nenhuma credencial no repositório: falha se um
.envfor versionado ou se a senha do banco for escrita emTelas/config.php. - O dump do banco (
BD/bdtelecall.sql) importa em um MariaDB limpo e cria as tabelasdadoseusuarios, com a coluna da senha grande o bastante para um hash. - Fumaça: as telas de login, cadastro e página principal respondem 200 no servidor embutido do PHP.
O projeto não tem testes automatizados de comportamento (login, cadastro e edição ainda não são exercitados de ponta a ponta).
Matheus Ansel
- GitHub: @MatheusAnsel
- LinkedIn: linkedin.com/in/matheusansel


