Estoy construyendo una API RESTful usando ExpressJs. ¿Cómo dejo que solo acepte solicitudes de mi Front-End?

Respuesta corta: no puedes. Cualquier persona con conocimiento suficiente puede ver la totalidad de sus solicitudes y respuestas y, por lo tanto, puede emularlas en cualquier otra aplicación. CORS puede restringir lo que puede verse por el front-end, si es que lo hace, y por muchas otras opciones. Sin embargo, todo esto puede ser falsificado y / o simulado por un programador razonablemente inteligente.

Sin embargo, lo que puede hacer es autenticar a sus usuarios y, utilizando el token generado por esa autenticación, asegurarse de que solo los usuarios autenticados y autorizados accedan a su API REST . Esto no restringirá el acceso a su front-end, pero ayudará a mantener alejados a los usuarios no deseados.

La cuestión es que no hay nada que identifique de forma exclusiva su interfaz que no pueda verse y duplicarse y luego enviarse desde otro lugar.

Otra opción, dependiendo de sus circunstancias, podrían ser las restricciones de IP. Puede limitar el acceso a direcciones IP específicas. Un pirata informático puede suplantarlo y pasarlo por alto, pero solo si el pirata informático tenía conocimiento previo de su API (es decir, ubicación, parámetros de solicitud, etc.). Puede hacerlo internamente utilizando CORS, una base de datos y / o algo así como iptables , y muchas otras formas

Primero debe hacerse esta pregunta (tal vez ya lo haya hecho y su pregunta no era específica): ¿Está restringiendo el acceso a su front-end o está restringiendo a los usuarios a los que permite el acceso? El primero no se puede hacer de manera confiable, el segundo tiene numerosas soluciones, la más común de las cuales describí anteriormente.

CORS es un sistema de control de solicitud / respuesta bastante granular, pero no es extremadamente seguro por sí mismo. Si cree que CORS será suficiente para sus necesidades, entonces deberá decidir qué restringir y qué permitir. CORS tiene muchas opciones, por lo que no hay una respuesta genérica. Sin embargo, es bastante sencillo, así que échale un vistazo aquí: control de acceso HTTP (CORS)

En primer lugar, no configura CORS de esa manera. Crea una lista negra / blanca para CORS. Así es como funciona CORS.

Pero para permitir SOLO que su interfaz se conecte a un back-end, necesita IpTables. Esto tiene menos que ver con CORS y más con limitar sus solicitudes de backend a su interfaz.

Sin embargo, es posible que no desee hacer eso en caso de que esté utilizando el servidor como un servidor API; CORS se encargará de la lista negra.

Realmente no puede, ya que el frontend (cliente) está sentado en la computadora de otra persona. Si quiere decir que solo puede acceder a él desde su computadora, necesitará una dirección IP estática y restringirá el servidor para permitir solo su dirección IP usando un firewall (iptables en Linux)

Simplemente no habilite la solicitud de origen cruzado. ¡Nada se requiere hacer aparte de esto!

More Interesting

Cómo crear un nuevo sitio web

Estoy en mi segundo año de universidad con solo conocimientos básicos en OOP y estructuras de datos. ¿Qué y cómo debo aprender algo para poder obtener un trabajo decente de desarrollador?

Quiero proporcionar transmisión de cricket en vivo en mi sitio web, ¿cómo puedo lograrlo?

¿Estoy buscando un script que detecte si el navegador actual es compatible con WebPlayer de Unity3D?

Me gustaría centrar verticalmente un elemento pequeño de altura fija en CSS lado a lado con un elemento de altura dinámica más grande de una manera que admita navegadores más antiguos. ¿Cómo hago esto?

Mi socio en un proyecto web sigue quejándose de que PHP es malo y no ha hecho nada. ¿Debería despedirlo?

Tengo una base de datos de hotel en documentos de Excel. ¿Cómo comienzo a construir un sistema de recomendación para hoteles?

Quiero construir un sistema de chat que pueda servir a miles de personas en el mismo canal mientras que aloje varios canales que también puedan albergar la misma cantidad. Conozco los conceptos básicos de la programación del servidor en Java, pero no estoy seguro de qué técnica debo usar para permitir tantas conexiones.

Quiero ser desarrollador web. ¿Necesitaré una maestría? En caso afirmativo, ¿cuál?

Soy un desarrollador con una idea para una aplicación web, ¿cómo puedo decidir si vale la pena buscarla?

¿Cómo creo un sitio web personal? ¿Por lo general, están codificados a mano desde cero o utilizan algún tipo de software de construcción de sitios?

Quiero dominar el desarrollo web front-end. ¿Debo ir a cursos en línea o comprar un libro y practicar por mi cuenta?

Si no quiero hacer desarrollo móvil o web, pero quiero hacer algunos proyectos para mostrar a los empleadores, ¿cuál sería mejor seguir?

Quiero ser un desarrollador de backend. ¿Es bueno NodeJS con Typecript para comenzar?

Estoy haciendo un pequeño juego HTML5 y quiero una forma de almacenar la puntuación de los usuarios. ¿Cuál es la mejor manera de hacerlo?