Aller au contenu principal
ShadowAcademy

Les langages Sécurité FiveM Permissions

Des commandes protégées

RegisterCommand crée une commande tapée dans le tchat ou la console :

RegisterCommand('donnerargent', function(src, args)
    -- src : qui l'a tapée (0 = la console du serveur)
    -- args : les mots qui suivent, sous forme de TEXTES
end, true)

Le troisième argument

Le dernier argument, restricted, est le plus important. À true, le serveur n'exécute la commande que pour ceux qui ont la permission command.donnerargent -- accordée par les ACE du fichier cfg. À false, n'importe quel joueur peut la taper.

Une commande d'administration enregistrée à false est l'une des failles les plus fréquentes des scripts gratuits.

Vérifier soi-même

Pour une vérification plus fine, IsPlayerAceAllowed interroge les mêmes ACE depuis le code :

if not IsPlayerAceAllowed(src, 'journal.voir') then return end

C'est aussi ce qui protège un événement réseau réservé aux administrateurs : un événement n'a pas de paramètre restricted, la vérification est à ta charge.

Les arguments restent suspects

Une commande restreinte n'est tapée que par des gens de confiance, mais une faute de frappe reste possible. args contient des textes : tonumber les convertit, et renvoie nil si ce n'en sont pas. Une commande qui plante sur /donnerargent abc n'est pas une faille, mais c'est une erreur de plus dans la console.

Des droits à la bonne taille

Côté configuration, un modérateur qui n'a besoin que d'expulser et d'avertir reçoit ces deux commandes, pas command entier :

add_ace group.moderateur command.kick allow
add_ace group.moderateur command.warn allow

Un compte de modérateur compromis ne peut alors rien faire de plus.

2 exercices pour cette lecon

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

  • Une commande d'administration moyen lecon a valider
  • Des droits à la bonne taille facile lecon a valider