// ✅ Use variáveis de ambiente
String password = System.getenv("DB_PASSWORD");
String ipServer = System.getenv("SERVER_HOST");cp .env.example .env
# Edite .env com seus valores reais
nano .envcd IronWatchServer
# As credenciais serão lidas de .env
mvn clean install
mvn spring-boot:runDefina em build.gradle:
buildTypes {
debug {
buildConfigField "String", "SERVER_HOST", "\"${System.getenv("SERVER_HOST_BUILD") ?: "localhost"}\""
buildConfigField "Integer", "SERVER_PORT", "${System.getenv("SERVER_PORT_BUILD") ?: "5555"}"
}
}- Configuração:
DB_USE_SSL=true(padrão) - Certificado: Configure com
javax.net.ssl.trustStore - Permissões:
allowPublicKeyRetrieval=false(default)
DB_HOST=localhost
DB_PORT=3306
DB_NAME=gds_ironwatch
DB_USER=ironwatch
DB_PASSWORD=<senha_forte>
DB_USE_SSL=true
- Usar
SSLSocketem vez deSocket - Gerar certificados auto-assinados para desenvolvimento
- Usar certificados válidos em produção
-
Credenciais
- Use gerenciador de secrets (AWS Secrets Manager, HashiCorp Vault, etc)
- Nunca commit
.envem produção - Rotate credenciais regularmente
-
SSL/TLS
- Certificados validados (Let's Encrypt, DigiCert, etc)
- HTTPS/TLS obrigatório
- HSTS headers
-
Logging
- Use framework de logging (SLF4J/Log4j)
- Não registre senhas ou tokens
- Armazene logs com segurança
-
Firewall
- Restrinja acesso ao porta TCP 5555 apenas de IPs autorizados
- Use VPN ou SSH tunneling para acesso remoto
- Credenciais movidas para variáveis de ambiente
- Arquivo com possível token removido
- SSL/TLS habilitado no MySQL
- IPs parametrizados (não hardcoded)
- TLS implementado para comunicação TCP
- Framework de logging implementado
- Testes de segurança (OWASP Top 10)
- Code review realizado
- Dependências auditadas (npm audit, OWASP dependency-check)
Para questões de segurança, abra uma issue privada ou entre em contato através de security@ironwatch.dev