À luz das leis SESTA/FOSTA, que efetivamente removem muitas proteções para administradores de sites sociais/fóruns/UGC (porto seguro da Seção 230), tornando os administradores responsáveis pelo que seus usuários fazem.
Pode ser sábio apoiar o uso de uma API de reconhecimento de imagem como uma solução para melhorar a proteção, a fim de automatizar o bloqueio de uploads de conteúdo explícito (como conteúdo inseguro, nudez, gore etc.).
Além disso, melhorar a proteção contra explorações, como o upload de imagens inadequadas em rascunhos e, em seguida, hotlink para essas imagens em outros lugares, usando-as como hospedagem de imagens anônima e gratuita. Não tenho certeza de quão explorável isso é no Discourse, mas parece que, com as configurações padrão, isso pode ser explorado por 180 dias após a criação do rascunho, sem que o administrador saiba o que foi enviado (excluir rascunhos mais antigos que n dias).
Seria ótimo verificar todas as imagens enviadas para o Discourse por meio da API Google Cloud Vision para garantir a segurança em relação ao Adsense. Fizemos isso em nosso site anterior e nunca recebemos nenhuma imagem de nudez ou gore.
Um Gem Ruby é fornecido pelo Google:
Um plugin potencial deveria se integrar ao processo principal de upload de imagens do Discourse para todas as imagens (publicações, avatares, fundos de perfil etc.) e rejeitar imagens que contenham conteúdo não permitido:
Isso é absolutamente possível, mas, na minha opinião, tiraria a fluidez da experiência. Se houver alguma maneira de integrar o modelo ao plugin, seria super legal.
Bem, o processo de upload de imagens embutidas já é assíncrono, na minha opinião. E a API do Google é muito rápida.
Por outro lado, também ficaria feliz em verificar as imagens depois que um usuário publicar uma nova postagem por meio de um webhook externo (API do Discourse) e alterar a postagem do usuário (por exemplo, remover a imagem e substituí-la pelo texto “IMAGEM REMOVIDA PELO ADMINISTRADOR”). Essa parte parece ser possível com a API, mas não consigo encontrar nenhuma referência sobre como realmente excluir a imagem “problemática” via API nesse caso, pois nem mesmo quero mantê-la em algum lugar nas sombras.
Fico feliz em trabalhar nisso como um serviço pago. Você pode me ajudar com o lado da API, ou seja, qual API é usada para detectar conteúdo ofensivo, etc.?
@Terrapop - Algo que você pode querer levar em consideração é a precisão do reconhecimento. Pode ser útil conseguir visualizar parte do conteúdo que foi bloqueado, para garantir que a configuração não esteja muito rígida em relação a ‘POSSÍVEL’, ‘PROVÁVEL’ e ‘MUITO PROVÁVEL’. Falsos positivos e negativos são bastante comuns.
Acho que uma implementação melhor seria enviar para a fila de revisão qualquer post que inclua imagens acima de certo nível de ‘possivelmente adulto’. Assim, o post nunca fica público, mas você ainda pode aprová-lo caso o reconhecimento não tenha sido preciso. Se for rejeitado a partir dali, as imagens serão excluídas, acredito que após um período definido pelo ‘clean_orphan_uploads_grace_period_hours’.
Isso permitiria usar o nível de detecção ‘POSSIVELMENTE’ com mais confiança.
Testamos a API em nosso site atual e sabemos quais níveis funcionam muito bem para nós.
@fzngagan está desenvolvendo o plugin para nós como código aberto, portanto, uma vez concluído, você poderá alterar e solicitar uma opção para não rejeitar diretamente, mas sim encaminhar para a fila de moderação.
Adoro a ideia de vincular a probabilidade às filas de revisão quando a imagem faz parte da postagem. Estou aberto a aceitar patrocínio ou PR nesse sentido.
Se isso for opcional como um acréscimo adicional, claro, estou de acordo.
Usamos a API em nossa antiga comunidade por bastante tempo e conhecemos os níveis aceitáveis para nós. Na maioria das vezes, a API estava correta ao negar, e o usuário simplesmente enviava uma imagem menos grave no lugar.
Além disso, eu gostaria que não apenas as postagens, mas também os uploads de imagens de avatares e fundos de perfil fossem verificados. Não sei se uma opção de fila também seria possível para esses casos?