Segurança no FiveM: como proteger seus scripts e a skill de IA que aplica isso

415 instalações no skills.sh

Não quer gerenciar as skills por conta própria? Obtenha o app completo.

Segurança no FiveM no nível de script se resume a uma regra: nunca confie no cliente. O cliente roda na máquina do jogador e pode estar totalmente comprometido. Um executor consegue chamar qualquer evento de rede que os seus recursos registram, com qualquer argumento e de qualquer ponto do mapa. Se você escreve Lua de servidor para economia, inventário, loja ou emprego, isso vale para você. A skill de segurança no FiveM dá ao seu assistente de IA as regras para escrever handlers que assumem que o cliente está mentindo.

O que a skill de segurança no FiveM te dá

O SKILL.md é curto de propósito. Ele enuncia a filosofia central e quatro regras de ouro, e depois aponta para rules/events.md com o detalhe de como estruturar e validar RegisterNetEvent e TriggerServerEvent.

  • Autoridade do servidor. O servidor dita a verdade. O cliente só pede ações.
  • Nunca confie nos parâmetros. Se um cliente diz “me dá $50”, o servidor confere que o jogador ganhou isso. O valor sai do estado do servidor, não do argumento do evento.
  • Verificação de distância. Antes de lootear, vender ou interagir com uma zona, o servidor compara a posição do jogador com o alvo.
  • Rate limiting. Ações críticas ganham cooldown ou debounce no servidor para que um evento spamado não rode mil vezes por segundo.

A skill foca na defesa no nível de script. Não é um produto anti-cheat completo e não substitui um. Ela torna os seus próprios eventos mais difíceis de abusar, que é a parte que nenhuma ferramenta externa faz por você.

Erros comuns de segurança no FiveM

  • Dar dinheiro ou itens a partir de um valor enviado pelo cliente. O handler lê amount do evento e paga. Sintoma: um jogador aparece com milhões depois de uma noite com um executor. Correção: calcule a recompensa no servidor a partir do que o jogador fez e ignore qualquer valor que o cliente mande.
  • Sem validação de source e sem checagem de permissão. O evento roda para quem dispará-lo, sem conferir se o jogador pode fazer aquela ação ou tem o emprego certo. Sintoma: qualquer um abre o arsenal da polícia. Correção: resolva source primeiro, carregue o jogador e verifique que a ação é permitida para ele.
  • Sem verificação de distância. Eventos de loja, loot e NPC disparam do outro lado do mapa. Sintoma: um jogador vende em todas as lojas ao mesmo tempo sem se mover. Correção: pegue a posição do ped no servidor e rejeite o evento se estiver a mais de alguns metros do alvo.
  • Sem cooldown. O evento pode ser disparado em loop. Sintoma: recompensas duplicadas e lag para todo mundo. Correção: guarde um timestamp por jogador para os eventos críticos e descarte o que chegar antes do cooldown acabar.
  • “Anti-cheat” só no cliente. Checagens como “o jogador está perto da loja?” vivem no script de cliente. Elas rodam na máquina comprometida, então o cheater as remove. Correção: mantenha as checagens de cliente para UX e repita no servidor cada uma que importa.

Por que assistentes de IA erram na segurança no FiveM

Um assistente genérico aprendeu com milhares de scripts públicos de FiveM, e a maioria confia no cliente. Peça um evento de “vender itens” e ele entrega um handler que pega item e price do cliente e paga. Funciona em teste e é uma porta aberta. Assistentes também colocam as checagens de distância e permissão no cliente, porque é lá que os exemplos colocam.

A skill de segurança inverte o ponto de partida. O assistente lê as regras de ouro e rules/events.md antes de escrever um handler, então ele valida source, deriva os valores do estado do servidor, verifica a distância no servidor e adiciona cooldowns às ações críticas. O resultado é um handler que assume que o cliente é hostil.

Instale a skill de segurança no FiveM em 30 segundos

  1. Clique em “Download SKILL.md” no topo desta página.
  2. Descompacte na pasta de skills ou rules da sua ferramenta de IA. A seção de instalação abaixo mostra o caminho exato para Claude Code, Cursor e VS Code.
  3. Peça ao assistente algo concreto, como “escreva o evento de servidor para vender peixe no píer”, e confira que ele valida source, checa a distância no servidor e calcula o pagamento sem confiar em um preço enviado pelo cliente.

Como instalar esta skill

Baixe o zip, descompacte e coloque a pasta onde a sua ferramenta carrega skills ou regras. O caminho exato depende da ferramenta:

Claude Code

Descompacte em .claude/skills/fivem-security/ dentro do projeto (a pasta precisa conter SKILL.md). Para todos os projetos, use ~/.claude/skills/fivem-security/.

Documentação de skills do Claude Code

Cursor

O Cursor carrega as regras do projeto de .cursor/rules/. Adicione ali um arquivo de regra apontando para a skill descompactada, ou cole o conteúdo do SKILL.md e dos arquivos de regras em uma regra. O formato é .mdc com frontmatter e muda entre versões, então confira a documentação da sua versão.

Documentação de regras do Cursor

VS Code / Copilot

O Copilot lê arquivos de instruções em .github/instructions/*.instructions.md. Copie o SKILL.md para lá com um glob applyTo para os seus arquivos Lua e mantenha os arquivos de regras ao lado.

Documentação de instruções do VS Code

O arquivo SKILL.md

Este é o arquivo que o seu assistente de IA lê. Ele aponta para os arquivos de regras incluídos no download.

Conteúdo da skill (inclui SKILL.md e quaisquer outros arquivos)

O conteúdo da skill está em inglês: é documentação técnica feita para agentes de IA.

FiveM Security

Activation Contract

Load for any net event handler, code granting money, items, vehicles or permissions, admin commands, ban logic, or questions about cheats, exploits or hardening.

Hard Rules

  • Never trust the client. The client REQUESTS; the server DECIDES from its own config and state.
  • Never accept prices, amounts, rewards or item names from the client. Derive them server-side.
  • GetInvokingResource() is nil for every net event crossing the network, player or cheater alike. NOT auth.
  • RegisterNUICallback is NOT authenticated: a cheater POSTs to any endpoint. Never the only gate before TriggerServerEvent.
  • Distance-check server-side: #(GetEntityCoords(GetPlayerPed(source)) - target), ~10 units.
  • Re-verify state server-side (job, item, cooldown) even if the client checked.
  • Rate-limit critical events; clear per-source state in playerDropped.
  • Filter native game events (weaponDamageEvent, startProjectileEvent, removeAllWeaponsEvent, ptFxEvent) with AddEventHandler + CancelEvent().
  • Authorize admin actions with ACE only: IsPlayerAceAllowed(source, object). Never an identifier list.
  • Key persistent data on license:. steam: is absent for non-Steam launches.
  • The sandbox blocks writes outside the resource's own folder, os.execute and io.tmpfile().
  • Log rejections. Escalate on counts, never auto-ban on one hit.

Decision Gates

Situation Reference
Client-sent price, amount, or any argument rules/events.md
Repeated or spammable event rules/rate-limiting.md
Damage, projectile, weapon strip, particles rules/net-game-events.md
Admin command or admin-only event rules/ace-permissions.md
Ban, whitelist, persistent record rules/identifiers.md
Resource writes files or spawns processes rules/sandbox.md
Hardening the server itself rules/server-convars.md

Execution Steps

  1. List every net event and NUI callback and the state each changes.
  2. Strip client values the server can compute itself.
  3. Add type/range, distance and state checks at the top; return early.
  4. Cooldown or token-bucket anything spammable; clean up on drop.
  5. Gate admin paths behind IsPlayerAceAllowed.
  6. Add game event filters for damage, projectiles, weapons.
  7. Log rejections with name and source id.

Output Contract

Return hardened handler(s) with validation, distance, ACE and state checks first; name the client parameters removed; include required server.cfg lines.

References

  • rules/events.md — handlers, distance, NUI callbacks.
  • rules/net-game-events.md — game event payloads, cancelling.
  • rules/ace-permissions.md — principals, objects, ACE guards.
  • rules/rate-limiting.md — cooldowns, token buckets, cleanup.
  • rules/identifiers.md — license:, tokens, deferrals.
  • rules/sandbox.md — filesystem, process, convar limits.
  • rules/server-convars.md — hardening convars.

Upstream docs: https://docs.fivem.net/docs/scripting-manual/

Perguntas frequentes

O anti-cheat integrado do FiveM é suficiente?
Não. As proteções da plataforma miram o cliente e ferramentas de cheat conhecidas. Elas não validam os eventos que os seus scripts registram. Se o seu handler confia em um valor enviado pelo cliente, um executor pode chamá-lo e nada impede. O seu código de servidor precisa validar.
Preciso proteger scripts cosméticos que rodam só no cliente?
É menos crítico, mas não é zero. Um script puramente de cliente que muda visuais locais afeta só aquele jogador. Qualquer evento que chegue ao servidor, mesmo vindo de um script cosmético, precisa ser validado no servidor, porque um cheater pode dispará-lo com qualquer argumento.
Posso usar esta skill com o ChatGPT?
Sim, com um passo manual. O SKILL.md e a pasta rules são markdown puro, então você pode colá-los na conversa como contexto. O suporte nativo a skills é para Claude Code, Cursor e VS Code.

Leituras mais longas do blog da FiveAI sobre o mesmo tema.

Mais skills