Assinaturas do Discourse

Estou louco aqui ou não há validação nenhuma na URL da imagem da assinatura da entrada do usuário?
Basicamente, um usuário pode inserir o que quiser e isso será enviado para outros usuários?

Além disso, por que o tamanho do banco de dados da URL da assinatura está definido como 32.000?
Por que alguém precisaria de 32.000 caracteres para uma URL de imagem?

Assustador :ghost:

Modifiquei o CSS para o seguinte, a fim de codificar permanentemente uma altura e largura máximas;

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

Mudei o tamanho máximo da URL da assinatura para 250 em plugin.rb

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

Adicionei isto ao final de “on(:user_updated) do |user|” em plugin.rb (não usarei o modo avançado)

    # Valida a URL se não estiver no modo avançado
    if !SiteSetting.signatures_advanced_mode && user.custom_fields["signature_url"]
      url = user.custom_fields["signature_url"]

      # Validação rigorosa: apenas HTTPS, apenas certos tipos de arquivo de imagem
      unless url =~ /\Ahttps:\/\/a-zA-Z0-9.\-\/_]+\.(png|jpe?g|gif|webp)(\?[a-zA-Z0-9=\&]+)?\z/
        Rails.logger.warn("[discourse-signatures] Rejeitada signature_url inválida para o usuário #{user.id}: #{url.inspect}")
        user.custom_fields["signature_url"] = nil
        user.save
      end
    end

Se estou fazendo algo errado aqui (nunca trabalhei com Discourse antes), por favor, corrija e me mostre a maneira certa de fazer isso.

1 curtida

Porque 250 não é o suficiente…

Essa é a ideia de uma assinatura. O mesmo vale para um fórum, as pessoas inserem coisas e outras pessoas as veem. Mundo louco, né?

5 curtidas

Quando o Discourse é atualizado para 3.5.0.beta8 (3.5.0.beta9-dev também é um problema), descobre-se que o usuário editou a assinatura e não consegue salvá-la (embora mostre salvo, não tem efeito), ainda está normal na 3.5.0.beta7. Esperamos que isso seja corrigido em breve, pois muitos plugins do beta7 para o beta8 são integrados.

2 curtidas

Temos um caso de uso específico para assinaturas e estou imaginando se seria relativamente fácil fazer algumas alterações.

  1. Concordo que gostaria de ver assinaturas apenas para grupos específicos na interface do usuário, não sou bom com CSS.
  2. Estamos usando nosso Discourse tanto como uma comunidade quanto como um sistema de tickets de suporte. Existe alguma maneira de termos uma configuração para “Exibir assinaturas apenas em X categorias”?

Realmente só precisamos delas em nossa seção de suporte, onde a maioria de nossas interações é feita por e-mail.

2 curtidas

4 publicações foram movidas para um novo tópico: Solicitação de recurso: incluir assinatura em notificações por e-mail