Sicurezza — Introduzione
QUESTION
Come proteggere un server FiveM da exploit e giocatori malevoli?
La regola d’oro: mai fidarsi del client. Ogni dato che arriva dal client può essere falsificato. In questo modulo impari a progettare risorse sicure.
| Obiettivo | Dettagli |
|---|---|
| Cosa imparerai | • Il principio “never trust the client” • Validare eventi ed input lato server • Proteggere denaro, item e veicoli • Gestire secrets e credenziali |
| Prerequisiti | • Nozioni di base Lua FiveM (modulo 08) • Conoscenza eventi client/server |
La Regola Fondamentale
Client ──── TriggerServerEvent('giveMoney', 999999) ────► Server
(l'attaccante ha modificato l'evento!)
Il client può inviare qualsiasi evento con qualsiasi argomento. Se il server non valida, il giocatore può:
- Darsi denaro infinito
- Spawnare item
- Salire di grado
- Spostare il personaggio ovunque
WARNING
La sicurezza in FiveM si fa 100% lato server. Il codice client è pubblico (chiunque può leggerlo) e modificabile (chiunque può alterarlo). Ogni decisione importante va presa e validata dal server.
Esempio di Vulnerabilità
Non sicuro ❌
-- server.lua
RegisterNetEvent('payday:giveReward')
AddEventHandler('payday:giveReward', function(amount)
-- ATTACCO: il giocatore manda questo evento da solo
-- TriggerServerEvent('payday:giveReward', 1000000)
local xPlayer = ESX.GetPlayerFromId(source)
xPlayer.addMoney(amount)
end)Sicuro ✅
-- server.lua
RegisterNetEvent('payday:claim')
AddEventHandler('payday:claim', function()
-- Il server decide l'ammontare, non il client
local xPlayer = ESX.GetPlayerFromId(source)
xPlayer.addMoney(Config.PaydayAmount)
end)Cosa Copre Questo Modulo
| Nota | Argomento |
|---|---|
| 01 | Introduzione (questa) |
| 02 | Validazione Eventi — check server-side su ogni evento |
| 03 | Proteggere Economia e Item — denaro, inventario, trading |
| 04 | Anti-Cheat e Configurazione — convars difensive, entity lockdown |
| 05 | Secrets e Best Practice — chiavi API, password, hosting |
Checklist Rapida di Sicurezza
- Nessun evento “soldi” che accetta importi dal client
- Tutti gli eventi server validano
source - Le funzioni admin controllate via ACE (modulo 11)
-
sv_scriptHookAllowed false - Nessun secret nel codice client
-
sv_entityLockdownattivo (modulo 11)
TIP
Prossimo passo: 02 - Validazione Eventi
Torna alla: Indice Generale