Secrets e Best Practice
INFO
Le credenziali (license key, password, token Discord, chiavi API) non devono mai finire nel codice client o in repository pubblici.
| Obiettivo | Dettagli |
|---|---|
| Cosa imparerai | • Dove tenere i segreti • Non committare chiavi su Git • Configurare .gitignore• Best practice di hosting |
| Prerequisiti | • Concetti base di hosting (modulo 11) |
1. Cosa è un “Secret”
| Secret | Dove va | Dove NON deve andare |
|---|---|---|
| License key server | server.cfg (non versionato) | client |
| Password RCON / txAdmin | config privata | client |
| Token Discord webhook | server.lua / config privata | client |
| Chiavi API (Tebex, Keymaster) | server-side config | client |
| Database password | connessione oxmysql | client |
WARNING
Il codice client è visibile a chiunque (scarica le risorse dal server). Qualsiasi stringa nel client è pubblica. Un webhook Discord nel client permette a chiunque di inviare messaggi come “admin”.
2. Config Server-Side
La convenzione FiveM: shared_scripts carica le stesse variabili anche sul client. Per i segreti usa solo server_scripts.
-- config.lua → shared (caricato anche dal client: NO segreti qui)
Config = Config or {}
Config.DiscordWebhook = nil -- non mettere segreti qui!
-- config_server.lua → SOLO server_scripts
ConfigServer = ConfigServer or {}
ConfigServer.DiscordWebhook = 'https://discord.com/api/webhooks/...'-- fxmanifest.lua
shared_scripts {
'@ox_lib/init.lua',
'config.lua' -- senza segreti
}
server_scripts {
'config_server.lua', -- segreti solo qui
'server.lua'
}3. Git e .gitignore
Se versioni la risorsa con Git, escludi i file con segreti.
# .gitignore
config_server.lua
server.cfg
*.envIMPORTANT
server.cfgnon va MAI committato: contiene license key, password RCON e permessi. Se hai già committato segreti, oltre a rimuoverli devi ruotarli (generarne di nuovi), perché la cronologia Git li conserva.
4. Protezione della Risorsa
Per distribuire risorse senza rivelare il codice, Cfx.re offre Asset Escrow (vedi modulo 17). In locale, ricorda:
- Gli script client sono sempre leggibili
- Gli script server possono essere offuscati ma non è una protezione reale
- La sicurezza vera è nella logica server, non nell’offuscamento
5. Hosting Best Practice
| Pratica | Perché |
|---|---|
| Password forte per txAdmin/RCON | Accesso non autorizzato = server in mano all’attaccante |
| Aggiorna artifacts regolarmente | Fix di sicurezza inclusi negli update |
| Cambia password se qualcuno lascia lo staff | Ex-staff con accesso = rischio |
| Usa SSH/FTP sicuro | Credenziali non in chiaro |
| Backup fuori dal server | Ripristino rapido dopo attacchi/danni |
6. Verifica di Sicurezza Completa (server RP)
- Nessun secret nel client
-
config_server.luanon committato -
server.cfgnon nel repo - Webhook Discord solo server-side
- Password txAdmin/RCON forti e ruotate
- License key mai condivisa
Modulo Sicurezza completato! Prossimo modulo: 13 - Performance
Torna alla: Indice Generale