¿Cuál es la mejor práctica para almacenar de forma segura las imágenes privadas cargadas por los usuarios de la aplicación?

Bueno, conozco 2 formas de hacerlo:

No recomendado como más lento : almacene sus imágenes directamente en la base de datos.

Recomendado :

  1. Almacene las imágenes en las carpetas con nombres aleatorios. También cambie el nombre de las imágenes a nombres aleatorios. Por ejemplo, si un usuario carga my-profile-pic.jpg, guárdelo en Your_Application_Folder / gvTsTpfzRKaICqdMTizd como EcTSsBUmUupJtDzskGQk.jpg . Esto hará que el acceso a sus imágenes sea casi imposible al adivinar las URL.
  2. Ahora, nunca coloque los enlaces directos (es decir, Your_Application_Folder / gvTsTpfzRKaICqdMTizd / EcTSsBUmUupJtDzskGQk.jpg ) a sus imágenes en su aplicación web.
  3. Cree una tabla en la base de datos que tenga dos columnas: (1) OneTimeLink (2) ActualPath. La columna OneTimeLink debe almacenar texto aleatorio. La columna ActualPath debe almacenar la ruta real de las imágenes.
  4. Su aplicación debe redirigir el valor almacenado en la columna OneTimeLink a ActualPath.
  5. Además, cada vez que OneTimeLink se redirige a ActualPath; Se debe cambiar el valor de OneTimeLink. Esto hará que el enlace expire automáticamente después de usarlo una vez.
  6. Ahora, cuando quiera usar las imágenes en su aplicación web; proporcione OneTimeLink en su aplicación web.