Files
DashDescomplicar/api/db.ts
Emanuel Almeida 20c16ab1e0 security: fix 3 critical vulnerabilities + dependency audit
CRITICAL FIXES:
- Remove hardcoded DB password from api/db.ts (was: 9qPRdCGGqM4o)
- Remove hardcoded API key from api/routes/wp-monitor.ts
- Add mandatory env var validation for DB_USER, DB_PASS, DB_NAME
- Add mandatory env var validation for WP_MONITOR_API_KEY
- Add connection timeouts to MySQL pool (10s/15s/30s)

VERIFIED:
- .env never committed to Git (credentials not exposed in repo)
- .gitignore working correctly

DEPENDENCIES:
- Fix qs vulnerability (GHSA-w7fw-mjwx-w883)
- npm audit: 1 low → 0 vulnerabilities

Related: AUDIT-REPORT.md vulnerabilities 1.1, 1.2, 1.3
Next: Implement rate limiting, CORS restrictions, input validation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-14 03:38:09 +00:00

42 lines
1.1 KiB
TypeScript
Executable File

/**
* Database Connection Pool
* @author Descomplicar® | @link descomplicar.pt | @copyright 2026
*/
import 'dotenv/config'
import mysql from 'mysql2/promise'
// Database configuration
const config = {
host: process.env.DB_HOST || 'localhost',
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0,
connectTimeout: 10000, // 10 segundos
acquireTimeout: 15000, // 15 segundos
timeout: 30000, // 30 segundos para queries
charset: 'utf8mb4'
}
// Validação obrigatória de credenciais
if (!process.env.DB_USER || !process.env.DB_PASS || !process.env.DB_NAME) {
throw new Error('Missing required database environment variables: DB_USER, DB_PASS, DB_NAME')
}
// Create connection pool
const pool = mysql.createPool(config)
// Test connection
pool.getConnection()
.then(conn => {
console.log('✅ MySQL connected')
conn.release()
})
.catch(err => {
console.error('❌ MySQL connection error:', err.message)
})
export default pool