Caricamento immagini: supporto API per il riconoscimento delle immagini

Alla luce delle leggi SESTA/FOSTA, che di fatto eliminano molte tutele per i gestori di siti web sociali, forum e contenuti generati dagli utenti (safe harbor della Sezione 230), rendendo i gestori responsabili delle azioni dei propri utenti.

Potrebbe essere saggio valutare l’utilizzo di un’API di riconoscimento delle immagini come soluzione per migliorare la protezione, al fine di automatizzare il blocco dei caricamenti di contenuti espliciti (inappropriati, nudità, gore, ecc.).

È inoltre possibile migliorare la protezione da exploit come il caricamento di immagini inappropriate nelle bozze, per poi hotlinkarle altrove, utilizzandole come hosting di immagini anonimo e gratuito. Non sono certo quanto sia sfruttabile questa vulnerabilità su Discourse, ma sembra che, con le impostazioni predefinite, possa essere sfruttata per 180 giorni dopo la creazione della bozza, senza che il gestore sappia cosa è stato caricato (eliminare le bozze più vecchie di n giorni).

Alcune API:

4 Mi Piace

Questo dovrebbe iniziare con un plugin, è improbabile che diventi mai una funzionalità core di Discourse.

8 Mi Piace

Sarebbe davvero utile controllare tutte le immagini caricate su Discourse tramite l’API Google Cloud Vision per garantire la sicurezza in vista di Adsense. L’abbiamo fatto sul nostro precedente sito web e non abbiamo mai ricevuto immagini nude o violente.

Google fornisce un Ruby Gem:

Un eventuale plugin dovrebbe agganciarsi al processo principale di caricamento delle immagini di Discourse per tutte le immagini (post, avatar, sfondi del profilo, ecc.) e rifiutare quelle che contengono contenuti non consentiti:

  puts "Adult:    #{safe_search.adult}"  puts "Spoof:    #{safe_search.spoof}"  puts "Medical:  #{safe_search.medical}"  puts "Violence: #{safe_search.violence}"  puts "Racy:     #{safe_search.racy}"
['UNKNOWN', 'VERY_UNLIKELY', 'UNLIKELY',        'POSSIBLE', 'LIKELY', 'VERY_LIKELY']

Dove dovrebbe agganciarsi un plugin del genere nel codice di Discourse?

C’è qualcuno interessato a svilupparlo tramite Marketplace?

2 Mi Piace

È assolutamente possibile, ma secondo me toglierebbe la fluidità all’esperienza. Se ci fosse un modo per integrare il modello direttamente nel plugin, sarebbe fantastico.

Avete utilizzato direttamente l’API Vision?

Ecco un plugin creato da @angus che può servire come punto di partenza. GitHub - angusmcleod/discourse-machine-learning · GitHub

2 Mi Piace

Cosa intendi esattamente per “continuità”?

1 Mi Piace

Voglio dire, prima di caricare, verificare l’immagine inviandola tramite POST all’API e ottenendo un segnale verde richiederebbe un po’ di tempo, giusto?

1 Mi Piace

Beh, a mio avviso il processo di caricamento per le immagini inline è già asincrono. E l’API di Google è molto veloce.

D’altra parte, sarei anche felice di controllare le immagini dopo che un utente ha pubblicato un nuovo messaggio tramite un webhook esterno (API di Discourse) e modificare il messaggio dell’utente (ad esempio, rimuovere l’immagine e sostituirla con il testo “IMMAGINE RIMOSSA DAL AMMINISTRATORE”). Questa parte sembra possibile con l’API, ma non riesco a trovare alcun riferimento su come eliminare effettivamente l’immagine “sbagliata” tramite l’API in un caso del genere, perché non voglio nemmeno tenerla da qualche parte nell’ombra.

2 Mi Piace

Sono felice di lavorare a questo come incarico retribuito. Puoi aiutarmi con la parte relativa alle API, ovvero quale API viene utilizzata per rilevare contenuti offensivi, ecc.

Tutto è ben documentato qui per Ruby:

In PHP l’abbiamo integrato in Drupal in meno di 2 ore.

3 Mi Piace

2 ore dovrebbero essere accettabili per questo. Devo inviarti un messaggio privato al riguardo?

3 Mi Piace

Sì, per favore. Sarebbe fantastico.

1 Mi Piace

@Terrapop - Qualcosa che potresti voler prendere in considerazione è l’accuratezza del riconoscimento. Può essere utile poter vedere parte del contenuto bloccato, per assicurarsi che non sia configurato troppo restrittivo in termini di ‘POSSIBLE’, ‘LIKELY’ e ‘VERY_LIKELY’. I falsi positivi e i falsi negativi sono piuttosto comuni.

Penso che potrebbe essere un’implementazione migliore inviare tutti i post che includono immagini al di sopra di un certo livello di ‘possibile contenuto adulto’ alla coda di revisione. In questo modo, il post non è mai pubblico, ma puoi comunque approvarlo se il riconoscimento non è stato accurato. Se viene respinto da lì, le immagini verranno eliminate, credo dopo un periodo di tempo in base a quanto impostato per ‘clean_orphan_uploads_grace_period_hours’.

Questo permetterebbe di utilizzare il livello di rilevamento ‘POSSIBLY’ con maggiore fiducia.

2 Mi Piace

Abbiamo testato l’API sul nostro sito web attuale e sappiamo quali livelli funzionano molto bene per noi.

@fzngagan sta sviluppando il plugin per noi in open source, quindi una volta completato potrai modificarlo e inviare una pull request per aggiungere un’opzione che non rifiuti direttamente, ma inoltri invece alla coda di moderazione.

3 Mi Piace

Ecco il plugin.

Adoro l’idea di collegare la probabilità alle code di revisione quando l’immagine fa parte del post. Sono disponibile ad accettare sponsorizzazioni o PR in tal senso. :slight_smile:

5 Mi Piace

Se questo è facoltativo come aggiunta, per me va benissimo, naturalmente.

Abbiamo utilizzato l’API nella nostra ex comunità per un bel po’ di tempo e conosciamo i livelli accettabili per noi. E la maggior parte delle volte l’API ha correttamente negato l’accesso, e l’utente ha semplicemente caricato un’immagine meno grave.

Inoltre, volevo che non solo i post, ma anche i caricamenti di immagini per avatar e sfondi del profilo fossero controllati. Non so se sia possibile avere un’opzione di coda anche per questi?

2 Mi Piace