Aller au contenu principal
ShadowAcademy

Les langages Sécurité FiveM Données et fuites

Ce qui fuit vers les joueurs

Une fuite n'a pas besoin d'attaque : il suffit d'envoyer une information à quelqu'un qui ne devait pas la recevoir.

-1 veut dire « tout le monde »

TriggerClientEvent('journal:ligne', -1, 'Alyx a retiré 5000 $')

La cible -1 envoie le message à chaque joueur connecté. Même si seule l'interface d'administration l'affiche, le message arrive chez tous, et n'importe quel client modifié peut le lire. Un journal d'administration, une position, un inventaire s'envoient joueur par joueur, à ceux qui y ont droit :

for _, id in ipairs(GetPlayers()) do
    if IsPlayerAceAllowed(id, 'journal.voir') then
        TriggerClientEvent('journal:ligne', id, texte)
    end
end

GetPlayers() renvoie les numéros des joueurs connectés, sous forme de textes ; les natives les acceptent tels quels.

Les fichiers client sont publics

Tout fichier listé dans client_scripts ou files d'un fxmanifest.lua est téléchargé par chaque joueur. Une clé d'API, un webhook, une requête SQL placés là sont lisibles par tous, même si le code « ne les affiche pas ».

Et, comme vu dans la branche cfg, une convar posée avec setr est lisible par chaque client. Un secret se pose avec set et ne se lit que côté serveur.

1 exercice pour cette lecon

Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte

  • Le journal ne part pas chez tout le monde moyen lecon a valider