Firmas de Discourse

¿Estoy loco o no hay ninguna validación en la URL de la imagen de la firma de la entrada del usuario?
Básicamente, ¿un usuario puede introducir lo que quiera y se enviará a otros usuarios?

Además, ¿por qué el tamaño de la base de datos de la URL de la firma se establece en 32_000?
¿Por qué alguien necesitaría 32000 caracteres para una URL a una imagen?

Espeluznante :ghost:

Modifiqué el CSS a esto para codificar de forma rígida una altura y anchura máximas;

.signature-img {
  max-width: 600px;
  max-height: 100px;
  width: auto;
  height: auto;
  display: block;
  margin: 5px 0;
}

Cambié el tamaño máximo de la URL de la firma a 250 en plugin.rb

  register_user_custom_field_type("signature_url", :string, max_length: 250)
  register_user_custom_field_type("signature_raw", :string, max_length: 250)

Añadí esto al final de “on(:user_updated) do |user|” en plugin.rb (no usaré el modo avanzado)

    # Validar la URL si no está en modo avanzado
    if !SiteSetting.signatures_advanced_mode && user.custom_fields["signature_url"]
      url = user.custom_fields["signature_url"]

      # Validación estricta: solo HTTPS, solo ciertos tipos de archivos de imagen
      unless url =~ /\Ahttps:\/\/\[a-zA-Z0-9.\-\/_]+\.(png|jpe?g|gif|webp)(\?[a-zA-Z0-9=\&]+)?\z/
        Rails.logger.warn("[discourse-signatures] Rechazada signature_url inválida para el usuario #{user.id}: #{url.inspect}")
        user.custom_fields["signature_url"] = nil
        user.save
      end
    end

Si estoy haciendo algo mal aquí (nunca he trabajado con Discourse antes), por favor corrígelo y muéstrame la forma correcta de hacerlo.

1 me gusta

Porque 250 no es suficiente…

Esta es la idea de una firma. Lo mismo ocurre con un foro, la gente introduce cosas y otras personas las ven. Mundo loco, ¿eh?

5 Me gusta

Cuando Discourse se actualiza a 3.5.0.beta8 (3.5.0.beta9-dev también es un problema), se descubre que el usuario editó la firma y no puede guardarla (aunque muestra que se guardó pero no tiene efecto), todavía es normal en 3.5.0.beta7. Espero que se solucione pronto, ya que muchos plugins de beta7 a beta8 están integrados.

2 Me gusta

Tenemos un caso de uso específico para las firmas y me pregunto si sería relativamente fácil hacer algunos cambios.

  1. Estoy de acuerdo en que me gustaría ver firmas solo para grupos específicos en la interfaz de usuario, no soy bueno con CSS.
  2. Estamos utilizando nuestro Discourse tanto como una comunidad como un sistema de tickets de soporte. ¿Hay alguna manera de que podamos obtener una configuración para “Mostrar solo firmas en X categorías”?

Realmente solo las necesitamos en nuestra sección de soporte, donde la mayoría de nuestras interacciones se realizan por correo electrónico.

2 Me gusta

4 publicaciones se dividieron en un nuevo tema: Solicitud de función: incluir firma en las notificaciones por correo electrónico