Tengo una aplicación de reacción js que funciona en el puerto 3000 y un nodejs que funciona en el puerto 4000. Estoy usando setupProxy como
const createProxyMiddleware = require(`http-proxy-middleware`) module.exports = function (app) {app.use('/api/*', createProxyMiddleware({ target:http://localhost:4000', changeOrigin: true, }))}En el servidor, ejecutándose en el puerto 4000, estoy usando cors como:
app.use(cors((cors.CorsOptions = { origin: `http://localhost:3000`,}))) La aplicación en localhost:3000 se expone como https://example.com/ . Tengo un punto final en el servidor Node como /api/todos al que se puede acceder perfectamente desde el cliente de reacción.
El mundo exterior puede publicar, por ejemplo, https://example.com/api/todos . ¿Cómo prevenir esto?
Había una publicación similar que respondí hace unos días aquí
Cómo lanzar un comando en el servidor desde una página web (nodejs)
Sin embargo, dicho esto, y tal vez un TLDR, necesita una forma de proteger su ruta. Aquí es donde realmente tienes dos opciones.
Por lo que parece, la aplicación/el front-end no están unidos, por lo que la opción 2 puede no ser una opción.
Con la opción uno, crearía un token JWT desde el frente. Este token contendría una cadena codificada que solo se puede decodificar en el servidor. Envía este token con su publicación o recibe una solicitud y tiene un middleware para decodificar y verificar que el token sea válido; de lo contrario, no permita que se publique en la ruta.