He creado una aplicación web simple que mostrará algunos datos en una tabla, que se actualizará semanalmente.
Esta actualización se realizó en el backend con algún código de Python, que raspa y altera algunos datos, antes de ponerlo en una base de datos SQLite.
Después de leer un poco, aprendí que para entregar esos datos a mi aplicación web debería hacer una API con Flask, que puede tomar esos datos y entregarlos al JS en mi aplicación web en forma de JSON, que luego puede usar los datos para llenar el mesa. Sin embargo, debería asegurar mi API con nombre de usuario y pw. Pero como es una interfaz JS que recuperará datos de la API, realmente no tiene sentido, ya que el nombre de usuario y pw tendrán que estar codificados en JS, que luego podrán leer los usuarios. (Yo creo que)
¿Debo exponer mi API a todos, o no es este el camino para poder utilizar los datos de SQLite como back-end para mi aplicación web? Estoy bien manteniendo la API solo para GET.
fuente
Respuestas:
Tienes razón, no tiene sentido proteger tu API. Asegurar una API solo es necesario en ciertas circunstancias.
Si está accediendo a datos que no desea que nadie vea, tal vez a través de una llamada de back-end, entonces tendría sentido agregar alguna forma de seguridad (normalmente una clave API o tokens de autorización en sus encabezados de solicitud).
Sin embargo, si realiza llamadas desde su front-end (es decir, del lado del cliente) a una API de back-end, entonces no tiene sentido poner seguridad adicional allí ya que el usuario ya puede ver la solicitud y ya tiene acceso a los datos que la API está devolviendo - así que al asegurarlo no estás logrando nada.
Normalmente, si la página que visita el usuario contiene datos confidenciales que no desea que todos vean, debería tomar medidas para proteger su sitio web (por ejemplo, protegerlo con un inicio de sesión para nombre de usuario y contraseña antes de poder acceder a esa página) . Si tuviera que adoptar este enfoque, donde el sitio web está protegido por nombre de usuario y contraseña, puede actualizar la API para asegurarse de que no responda a solicitudes en las que el usuario no está autenticado (por ejemplo, generando un token de sesión o algo único para cada usuario registrado).
Si echa un vistazo a los sitios web que tienen una gran cantidad de datos gratuitos disponibles, encontrará que todos tienen llamadas API de front-end que son completamente inseguras (porque no tiene sentido si los datos ya son de libre acceso). Algunos sitios web toman medidas para tratar de asegurarse de que sea su propio sitio web el que llama a la API, pero aun así es un poco inútil ya que los scrappers web siempre pueden extraer los datos del HTML.
fuente
Eche un vistazo a esta página que describe los encabezados de autenticación. Esta ruta más simple es codificar la información del encabezado en Flask para hacerlo un poco más seguro. También puede probar la ruta más complicada de leer la información del encabezado de su base de datos. Lo que actualmente funciona para mí para leer de postgres db está a continuación, por lo que puede modificarlo ligeramente para sqlite.
fuente
fuente