Skip to content

FNAND0/app_help_desk

Repository files navigation

Help Desk App

Sistema de gerenciamento de suporte com autenticação segura e proteção HTTPS.

🚀 Início Rápido

Pré-requisitos

  • PHP 7.3+
  • Apache com módulo mod_rewrite (para produção)
  • HTTPS habilitado (recomendado)

Instalação Local

  1. Clonar o repositório:
git clone https://github.com/FNAND0/app_help_desk.git
cd app_help_desk
  1. Iniciar servidor PHP built-in:
php -S localhost:8000
  1. Acessar a aplicação:
  • Abra seu navegador em: http://localhost:8000

🔐 Credenciais de Teste

E-mail Senha
adm@teste.com.br abcd
user@teste.com.br 123

📋 Estrutura do Projeto

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

🔐 Funcionalidades de Segurança

Implementadas

Autenticação Segura

  • Senhas armazenadas em hash com password_hash() e password_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 clickjacking
  • X-Content-Type-Options: nosniff - Previne MIME sniffing
  • Referrer-Policy: strict-origin-when-cross-origin
  • Strict-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

📝 Funções Disponíveis

functions.php

// 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

🔧 Uso das Funções

Exemplo: Criar página protegida

<?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>

Exemplo: Sanitizar entrada

$name = sanitize_input($_POST['name'] ?? '');
// Protegido contra XSS

📦 Implantação em Produção

Apache + HTTPS (Let's Encrypt)

  1. Instalar Certbot:
sudo apt update
sudo apt install certbot python3-certbot-apache
  1. Gerar certificado:
sudo certbot certonly --apache -d seu-dominio.com
  1. Configurar .htaccess: O arquivo já está configurado com redirecionamento HTTPS automático.

  2. Habilitar mod_rewrite:

sudo a2enmod rewrite
sudo systemctl restart apache2

Variáveis de Ambiente (Recomendado)

Para 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') ?: '';

Checklist de Segurança

  • HTTPS habilitado
  • Senhas de usuários alteradas
  • .htaccess configurado corretamente
  • session.cookie_httponly = On no php.ini
  • session.cookie_secure = On no php.ini
  • Diretórios sensíveis com permissão 700
  • index.html em diretórios públicos (para evitar listagem)

🐛 Troubleshooting

Erro: "Redirecionamento HTTPS não funciona"

Verifique se o servidor está atrás de proxy reverso:

// O código já detecta automaticamente via:
$_SERVER['HTTP_X_FORWARDED_PROTO']

Erro: "Sessão não persiste"

Verifique permissões da pasta /tmp no Linux:

ls -la /var/lib/php/sessions/

Erro: "Cookie não é definido"

Certifique-se de que header() é chamado antes de qualquer output:

<?php
require_once 'functions.php';
init_session();  // Antes de qualquer echo!
?>

📊 Fluxo de Autenticação

Acesso a home.php
    ↓
init_session() → enforce_https() → require_auth()
    ↓
is_authenticated() == false?
    ↓ SIM
redirect('index.php?login=erro')
    ↓ NÃO
Exibir home.php

🎯 Próximos Passos

Melhorias Sugeridas

  1. Integração com banco de dados:

    • Migrar usuários para tabela users
    • Armazenar logs de acesso
  2. 2FA (Two-Factor Authentication):

    • Adicionar autenticação com QR code (Google Authenticator)
  3. Rate Limiting:

    • Limitar tentativas de login
    • Proteção contra brute force
  4. Audit Log:

    • Registrar quem fez login e quando
    • Monitorar atividades
  5. Recuperação de Senha:

    • Sistema de e-mail para reset
    • Tokens com expiração

📄 Licença

MIT License - veja LICENSE para detalhes.

👤 Autor

FNAND0 - GitHub


Última atualização: Maio 2026

About

Projeto de web desenvolvimento web completo - 20 cursos + 20 projetos_UDEMY

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors