Protección contra Hot-Linking en Avatar Proxy y CDN

Odio las preguntas vagas. ¿Qué estabas pensando cuando pediste “esto”?

Aquí están mis configuraciones actuales:

Configuración de Discourse:

  • Instalación estándar en un solo contenedor
  • Configurado como un subdominio: forums.domain.tld
  • Configuración estándar de S3 para subidas
  • Las subidas se guardan en S3

Configuración de S3:

  • Digital Ocean S3 Bucket
  • Bucket activado para acceso externo
  • Ninguna otra capa de seguridad o permisos

Configuración de CDN:

  • bunny CDN
  • Referentes permitidos configurados: domain.tld y *.domain.tld
  • El interruptor que mató el acceso a los avatares fue “Bloquear acceso directo a archivos URL”.

Cuando se activa, todos los avatares reciben un error 403. Cuando se desactiva, los avatares se muestran.

Imágenes que no son avatares:

  • URL en Discourse: https://cdn.domain.tld/optimized/3X/3/1/filename_#_size.jpeg

Imágenes de avatares:

  • URL en Discourse: https://forums.domain.tld/user_avatar/forums.domain.tld/mazzini/48/776_2.png

Una publicación anterior, ¿Cómo se almacenan y acceden a los avatares?, indica que Discourse utiliza un proxy para los avatares. Por lo tanto, la estructura de URL para los avatares no es una estructura de URL de imagen estándar.

Dentro de mi sistema, los avatares están disponibles desde S3 o desde la CDN. Esto indica que en algún lugar/de alguna manera la URL del avatar se convierte en una URL de CDN.

Cuando esto sucede, la CDN considera la URL como un enlace de acceso directo y bloquea el acceso con un 403.

¿Espero haber respondido a la pregunta de “esto”?