Retour à la leçon
Mission

Mission : le bouton admin qui ne protège rien

Corriger une commande sensible protégée uniquement par une interface, et la sécuriser avec ACE et logging.

Contexte

Le serveur affiche un bouton "Donner de l'argent" uniquement dans l'interface des joueurs marqués admin côté client (if isAdminUI then showButton() end). La commande serveur réelle, elle, ressemble à :

lua
RegisterCommand('givemoney', function(source, args)
    AddMoneyToPlayer(tonumber(args[1]), tonumber(args[2]))
end, false)

Un joueur non-admin a découvert qu'il pouvait taper /givemoney directement dans le chat, sans passer par aucun bouton, et se créditer de l'argent à volonté.