¿Es necesario esto en una API?

Iniciado por Rex, Marzo 06, 2020, 12:50:40 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Marzo 06, 2020, 12:50:40 AM Ultima modificación: Marzo 06, 2020, 12:52:17 AM por Rex
Hola!, buenas... lo que sucede es que estoy trabajando en una aplicación web. La misma está en react (front-end) y expressjs (backend para el API).

Ahora, lo que sucede es que tengo una gran duda... sobre saber si hacer esto es realidad necesario o no.

Mi Aplicación consulta información de una API. Entonces, como cada usuario tiene sus permisos y restricciones, estaba pensando que para tener una mejor seguridad... debería enviar el ID del usuario logeado para chequear sus permisos antes de realizar cualquier tipo de acción que sólo esté disponible para ciertos usuarios.

Osea, sí configure el CORS en el API para que solo pueda realizar consultas el host del front-end... pero me entra la duda de qué alguien pueda violentar esa "seguridad" y hacer cualquier tipo de cosa sin que se le restrinja algo en la aplicación. Es por ello que estaba pensando en incluir el ID del usuario en toda petición que haga el servidor (Aunque parece algo no recomendable)... Pero quisiera que alguien aquí me ayude u oriente sobre qué debo hacer.

Lo que requiero es que mi aplicación sea segura... y trato de que así lo sea por todas las partes.

En pocas palabras, al tratar de modificar un documento.. se enviará al API el documento modificado y el ID del usuario que realizó la modificación.. para checar si este usuario tiene o no permisos para hacerlo. ¿Es necesario o solo basta con configurar el CORS?

Hola Rex,

El CORS no te bastara para tener una buena seguridad en este caso, este valida que la petición se realiza desde un dominio confiable en el navegador.
El servidor debería conocer los permisos de cada usuario y saber que petición corresponde a cada uno. Esto se logra con cookies ó autenticaciones tipo Basic y JWT.

En plataformas de front end tipo React, Angular generalmente se usa mas JWT, aunque puedes empezar a probar con autenticación Basica para tener una idea, que es simplemente enviar el usuario y contraseña cada vez que se envía una petición. Recuerda que tu sitio debe contar con SSL para prevenir ataques MITM.

Por último, si ya tienes algún tipo de autenticacion de ingreso, también se necesita verificar los permisos de cada usuario al realizar cualquier acción con el servidor. Como lo describes en tu pregunta, cualquier usuario raso puede tener acceso a los permisos de administrador simplemente realizando una petición API a estos endpoints.

Saludos...