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.

ObiettivoDettagli
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

NotaArgomento
01Introduzione (questa)
02Validazione Eventi — check server-side su ogni evento
03Proteggere Economia e Item — denaro, inventario, trading
04Anti-Cheat e Configurazione — convars difensive, entity lockdown
05Secrets 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_entityLockdown attivo (modulo 11)

TIP

Prossimo passo: 02 - Validazione Eventi


Torna alla: Indice Generale