Un despliegue exitoso implica mantener la seguridad de las API Keys en nuestras aplicaciones. Al desplegar, siempre surge el desafío de cómo proteger estas claves sensibles, sobre todo en aplicaciones frontend. Desgraciadamente, cuando solo trabajamos con archivos estáticos, la protección de estas claves es limitada. Todo el código en el frontend es público, y con herramientas básicas como el inspector de elementos, cualquiera puede acceder a nuestras claves. Sin embargo, existen estrategias para mitigar este riesgo.
¿Qué riesgos hay al exponer la API Key?
Visibilidad pública: Todas las peticiones HTTP en el frontend pueden revelar la API Key.
Requiere cambios en el repositorio: Al conectar Git con el sistema de deploy, tendríamos que incluir la API Key, exponiéndola más aún.
Estrategias para proteger la API Key
Uso consciente de The MovieDB: Esta plataforma permite monitorear el uso de la API Key, mostrando quiénes la están utilizando y cuántas solicitudes se realizan al día. Esto es una buena práctica para detectar usos no deseados.
Controlar el backend: En lugar de dejar la clave en el frontend, podríamos tener un backend que almacene la API Key y gestione las solicitudes a la API de forma privada. Esto se puede lograr utilizando servicios como:
Heroku
Vercel
AWS, Google Cloud Platform, Azure (para opciones más avanzadas)
Variables de entorno: En un backend personal, puedes establecer variables de entorno para almacenar la API Key de manera segura, de modo que no esté presente en el código visible del repositorio.
¿Cómo desplegar en GitHub Pages sin comprometer la seguridad?
Para llevar a cabo un despliegue usando GitHub Pages, aquí tienes un proceso a seguir teniendo en cuenta las advertencias de seguridad:
Ignorar archivos sensibles: Añadir secrets.js, donde guardas API Keys, en .gitignore para evitar subirlo al repositorio público.
Crear una rama para deploy: Para desplegar, crea una nueva rama y quita el archivo secrets.js de tu .gitignore temporalmente para poder agregarlo a la rama de despliegue.
Configurar GitHub Pages: En la configuración de tu repositorio en GitHub, selecciona la rama githubpages para el despliegue. Al desplegar, la aplicación estará disponible en una URL pública.
Recomendaciones adicionales para un proyecto profesional
Para aquellos estudiantes interesados en llevar estos conocimientos a un nivel más profesional, es vital considerar el aprendizaje del backend, aunque sea en sus conceptos básicos. Esta habilidad no solo permite un control más seguro de API Keys, sino también mejora la capacidad de desplegar aplicaciones más complejas y profesionales. Si estás dispuesto a aprender, considera estos consejos:
Cursos de backend: Aprende los fundamentos en lenguajes como Node.js, Python, o el que prefieras.
Practica en plataformas multi-lenguaje: Experimenta con Heroku, Vercel y similares que ofrecen soporte para varios lenguajes y configuraciones de backend.
Proyectos adicionales: Crea más aplicaciones para reforzar el conocimiento adquirido y explorar diferentes técnicas de seguridad y despliegue.
El camino del desarrollo profesional es vasto, pero nunca olvides que cada paso pequeño contribuye a un conocimiento profundo y robusto. Tu seguridad en el despliegue y manejo de las API Keys es crucial, y con cada experiencia, te haces más competente en tu oficio. Así que anima, ¡y sigue aprendiendo!
Aquí mi sitio en Netlify , espero no me roben la API-KEY, pero la vida es un riesgo XD
Reto 1 - Hacer responsive
Reto 2 - Cargar las favorites movies sin recargar la página con el evento window
Reto 3 - Agregar idiomas
Reto 4 - Arreglar espacio en blanco abajo
Prometo hacer todos los retos y responder este mensaje con los updates
¡Gracias por el magnífico curso!
You can do it, homie!!
He subido mi sitio a Netlify, espero que les guste la estructura del proyecto.
.
Url del proyecto:
.
Lo he subido usando las buenas prácticas de como proteger las variables de entornos usando archivos .env y además empaquetando todo el proyecto con webpack, recomiendo hacer el Curso de Webpack con el profesor Oscar Barajas y si quieren ir al grano, esta clase me ayudó múcho a como desplegar un sitio web en netlify.
.
Les comparto mi proyecto en github: Click aquí
Te quedó super. Muy buen trabajo. :clap:
Ame tu proyecto. Crees que seria posible que escribieras un tutorial en este curso explicando como manejaste el tema de seguridad de la API KEY. He estado varios dias tratando de hacerlo con variables de entorno y cloud functions en Netlify pero no me tenido exito
Buenísimos cursos, me enseñaron mucho, recomendados 100%. Aquí les dejo mi solución con reto completado https://pickone-free.netlify.app/
Espectaculaaaaaar Gustavo...!!!!
Cómo solucionaste para que te funcionara el cambio de idiomas?. Yo traté de hacerlo así pero no me funcionó.
Podrías ayudarme please...
no lo subí pero así quedo
Les dejo mi proyecto https://devnielote.github.io/quick-watch/# 😁
No logré que funcionara el scroll infinito desde un celular, solo funcionaba correctamente desde el escritorio y las dev tools 😅
Terminado, me encanta el resultado final, aunque aun hay detalles que pulir y animacion por añadir.
Aqui enlace The Moovies
Les comparto mi deploy y mi repositorio 😉
Aqui mi DEPLOY:
APRENDI MUCHO! Gracias @JuanDc
Dejo el link de mi proyecto:
Agradezco el feedback :)
Siento que puedo mejorar en CSS pero si fue gratificante que aunque no haya hecho un curso de CSS ya me puedo manejar mejor con tantos elementos y modificadores. Aquí les dejo el resultado, en un futuro le agregaré aún mas features 💚
Main section
Movie Detail
Internationalization
Oh por dios hace el cambio de lenguaje YEEEEEESSS!!!! :tada:
Me parece que esta genial, no hay que esperar ser expertos para iniciar.
deberias compartir tu repo.
Aquí les dejo mi app desplegada, aún tiene pequeños fallos(los cuales iré arreglando), pero es trabajo honesto, es el proyecto mas largo que he hecho 😃
MovieDP APP Cualquier retroalimentación es bienvenida
¡Que gran trilogia de cursos! Fue realmente un antes y un despues en mi forma de trabajar.
Hola, estoy pasando por el siguiente problema. En favoritos, no me aparecen los señalados, me sale una lista larga sin motivo alguna con la imagen de error.
No sé qué sucede, ya copié descaradamente todo el código del profe Juan, pero sigue dando el mismo resultado.
¿Alguien me puede ayudar, por favor?
No ya nada, se solucionó una vez hice deploy. Lol y XD. Gracias de todas maneras por su atención.
borre todo (incluido el archivo git del proyecto en mi computadora) y lo subi de nuevo. para ver si asi lograba hacer el deploy. Eso lo subí a github y ahora tengo solo una rama. la master. Y la api key no esta oculta. y sin embargo no me muestra nada. entro al link de la pagina, el que me proporciona github, y la api no muestra nada.
Un curso muy completo, este es mi proyecto, solo hice la versión mobile, después lo ire mejorando para versión tablet y desktop.