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