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

Aprendí desarrollo web. ¿Qué debería aprender a continuación?

He completado HTML y CSS de Codecademy. Sin embargo, mi conocimiento se limita a la codificación en el navegador. ¿Cómo trabajan los profesionales y qué hago ahora?

¿Por qué tengo que aprender AngularJS?

Cómo ser el mejor en todos los módulos de JAVA

Tengo 22 años y estoy aprendiendo desarrollo web front-end. Debido a algunos problemas, no puedo trabajar en un trabajo regular. ¿Cómo puedo tener éxito en trabajar independientemente sin experiencia laboral?

¿Cuándo usas una pila LAMP versus una pila MEAN?

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

¿Debo aprender el lenguaje JavaScript completo o es mejor aprender algunos relacionados con el desarrollo web en caso de que quiera convertirme en desarrollador web?

Quiero participar en un concurso de aplicaciones web donde el tema es "aplicaciones para la vida laboral diaria". ¿En qué contexto debo interpretar esto y qué campos puedo abordar?

Estoy aprendiendo desarrollo web yo mismo en casa después de 7 meses. ¿Qué debo hacer junto a él para tener algo que explique la brecha al empleador?

Quiero construir un sitio como Airbnb. Si tengo un presupuesto bajo, ¿debo usar WordPress o desarrollarlo desde cero?

Tengo problemas con los algoritmos básicos de JavaScript en Free Code Camp. ¿Debo aprender en otro lugar o continuar con Free Code Camp?

Estoy tratando de crear un sitio web usando etiquetas html. pero ¿cómo veo la página web?

Estoy diseñando un menú de navegación. ¿Algún consejo o truco que lo haga increíble? ¡Gracias!

Recientemente me colocaron en una empresa como desarrollador de PHP. ¿Debo ir por eso? Como, he oído que PHP es un lenguaje moribundo.