Seguridad: escribe recursos sin agujeros · Lección 3/3 · 6 min

Checklist antes de publicar o instalar

Una lista rápida para no llevarte sustos, tanto si subes un recurso como si instalas uno ajeno.

Antes de INSTALAR algo de fuera

  • Pásalo por la Auditoría de seguridad (backdoors, miners, exfiltración).
  • Busca os.execute, load(, webhooks de Discord y http a IPs raras.
  • Desconfía de lo muy ofuscado: si no puedes leerlo, no sabes qué hace.
  • Pruébalo primero en un servidor de test, nunca directo en producción.

Antes de PUBLICAR lo tuyo

  • Toda la lógica sensible está en el servidor y validada.
  • Consultas parametrizadas (?), nada de concatenar SQL.
  • Sin secretos hardcodeados (van en secrets.cfg vía GetConvar).
  • Anti-spam en los eventos que dan dinero/items.
  • config.lua para lo configurable; sin valores mágicos sueltos.

La seguridad no es paranoia: es respeto por los dueños de servidor que confían en tu recurso y por los jugadores. Un recurso seguro es un recurso que la gente recomienda.

Practica lo aprendido

0/3
Test

Antes de PUBLICAR tu recurso, ¿qué NO debe quedar en el código?

Pista

Lo que no quieres que se filtre en un leak de tu recurso.

Corrige el error

Esta consulta concatena datos del jugador (inyección SQL). Conviértela en parametrizada.

Este código tiene un fallo:

1local nombre = obtenerNombreDelCliente()
2MySQL.query('SELECT * FROM users WHERE name = "' .. nombre .. '"')

Reescríbelo corregido:

Pista

MySQL.query('SELECT * FROM users WHERE name = ?', { nombre }).

Rellena los huecos

Completa: lee la API key desde un convar (secrets.cfg) en vez de hardcodearla.

1-- en secrets.cfg: set discord_token "tu_token"
2local token = ('discord_token', '')
3if token == '' then print('Falta configurar el token') end
Pista

La función nativa de FiveM para leer convars.

Reto: prográmalo tú

Repasa un recurso tuyo con esta checklist y arregla el punto más flojo que encuentres.

Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.

Ver pista

Empieza por el más crítico: ¿hay lógica de dinero/items que se decide en el cliente?

Escribe aquí tu solución:

¿Qué tal esta lección?