Sistema de gerenciamento de suporte com autenticação segura e proteção HTTPS.
- PHP 7.3+
- Apache com módulo mod_rewrite (para produção)
- HTTPS habilitado (recomendado)
- Clonar o repositório:
git clone https://github.com/FNAND0/app_help_desk.git
cd app_help_desk- Iniciar servidor PHP built-in:
php -S localhost:8000- Acessar a aplicação:
- Abra seu navegador em:
http://localhost:8000
| Senha | |
|---|---|
| adm@teste.com.br | abcd |
| user@teste.com.br | 123 |
app_help_desk/
├── index.php # Página de login
├── home.php # Página inicial (protegida)
├── valida_login.php # Validação de autenticação
├── functions.php # Funções reutilizáveis
├── .htaccess # Configurações Apache
├── styles/
│ ├── login.css # Estilos de login
│ └── home.css # Estilos da página inicial
└── README.md # Este arquivo
✅ Autenticação Segura
- Senhas armazenadas em hash com
password_hash()epassword_verify() - Validação de entrada com
sanitize_input()
✅ Proteção de Sessão
- Cookies com flags
Secure,HttpOnly,SameSite=Lax - Regeneração de ID de sessão após login
- Proteção contra fixação de sessão
✅ Redirecionamento HTTPS
- Aplicação força HTTPS automaticamente
- Suporte a proxies reversos com
X-Forwarded-Proto
✅ Cabeçalhos de Segurança (via .htaccess)
X-Frame-Options: SAMEORIGIN- Proteção contra clickjackingX-Content-Type-Options: nosniff- Previne MIME sniffingReferrer-Policy: strict-origin-when-cross-originStrict-Transport-Security: max-age=31536000- HSTS
✅ Controle de Acesso
require_auth()bloqueia acesso não autenticado- Redirecionamento automático para login em páginas protegidas
// Inicializar sessão com cookies seguros
init_session(): void
// Forçar HTTPS
enforce_https(): void
// Redirecionar usuário
redirect(string $location): void
// Sanitizar entrada
sanitize_input(string $value): string
// Obter lista de usuários
get_users(): array
// Autenticar usuário
authenticate_user(string $email, string $password): bool
// Verificar autenticação
is_authenticated(): bool
// Exigir autenticação (redireciona se não autenticado)
require_auth(): void
// Obter e-mail do usuário autenticado
get_session_user(): string<?php
require_once __DIR__ . '/functions.php';
init_session();
enforce_https();
require_auth();
$userEmail = get_session_user();
?>
<!DOCTYPE html>
<html>
<body>
<p>Bem-vindo, <?php echo $userEmail; ?></p>
</body>
</html>$name = sanitize_input($_POST['name'] ?? '');
// Protegido contra XSS- Instalar Certbot:
sudo apt update
sudo apt install certbot python3-certbot-apache- Gerar certificado:
sudo certbot certonly --apache -d seu-dominio.com-
Configurar .htaccess: O arquivo já está configurado com redirecionamento HTTPS automático.
-
Habilitar mod_rewrite:
sudo a2enmod rewrite
sudo systemctl restart apache2Para maior segurança em produção, considere usar variáveis de ambiente:
// config.php (não commit este arquivo)
$DB_HOST = getenv('DB_HOST') ?: 'localhost';
$DB_USER = getenv('DB_USER') ?: 'user';
$DB_PASS = getenv('DB_PASS') ?: '';- HTTPS habilitado
- Senhas de usuários alteradas
-
.htaccessconfigurado corretamente -
session.cookie_httponly = Onno php.ini -
session.cookie_secure = Onno php.ini - Diretórios sensíveis com permissão 700
-
index.htmlem diretórios públicos (para evitar listagem)
Verifique se o servidor está atrás de proxy reverso:
// O código já detecta automaticamente via:
$_SERVER['HTTP_X_FORWARDED_PROTO']Verifique permissões da pasta /tmp no Linux:
ls -la /var/lib/php/sessions/Certifique-se de que header() é chamado antes de qualquer output:
<?php
require_once 'functions.php';
init_session(); // Antes de qualquer echo!
?>Acesso a home.php
↓
init_session() → enforce_https() → require_auth()
↓
is_authenticated() == false?
↓ SIM
redirect('index.php?login=erro')
↓ NÃO
Exibir home.php
-
Integração com banco de dados:
- Migrar usuários para tabela
users - Armazenar logs de acesso
- Migrar usuários para tabela
-
2FA (Two-Factor Authentication):
- Adicionar autenticação com QR code (Google Authenticator)
-
Rate Limiting:
- Limitar tentativas de login
- Proteção contra brute force
-
Audit Log:
- Registrar quem fez login e quando
- Monitorar atividades
-
Recuperação de Senha:
- Sistema de e-mail para reset
- Tokens com expiração
MIT License - veja LICENSE para detalhes.
FNAND0 - GitHub
Última atualização: Maio 2026