Embedding è ROTTO in 3.0.4 (stabile)

Ho il sospetto che questa modifica

abbia compromesso il modo in cui utilizzo l’embedding sul mio sito web. Qualcuno può indicarmi cosa è stato esattamente modificato?

Utilizzo Discourse per creare argomenti per i post del mio blog (come sistema di commenti). Il mio sito web è diviso in due parti per due lingue, quindi utilizzo due host per filtrare i post in inglese (/blog/somepost) e tedesco (/de/blog/somepost) in diverse categorie del forum.

I post dal lato tedesco del sito web non vengono più incorporati da quando il mio Discourse è stato aggiornato. Presumo che abbia a che fare con la patch sopra menzionata.

Qualsiasi aiuto nel tentativo di risolvere questo problema sarebbe molto apprezzato.

2 Mi Piace

D’altra parte, potrebbe essere qualunque sia questo problema:

Certamente ho quelle DOMExceptions che compaiono. Ancora una volta, qualsiasi aiuto sarebbe molto apprezzato!

1 Mi Piace

sì, starei esaminando le policy e le impostazioni di sicurezza per il tuo forum e il sito web incorporato. lo screenshot sembra a posto. qual è lo script che stai usando e che dire delle altre impostazioni di incorporamento? hai apportato modifiche recenti lì?

il mio forum utilizza questa funzionalità di incorporamento dei post più volte al giorno e al momento funziona benissimo, quindi so che non è rotta. stiamo utilizzando l’ultima beta e siamo ospitati, quindi sono fiducioso nella configurazione.

1 Mi Piace

Ciao, grazie per aver cercato di aiutare!

Non ho il controllo di alcuna policy di sicurezza poiché entrambi i siti sono ospitati da provider di hosting. In qualche modo dubito che abbiano rotto questo. Ma indagherò con il mio hoster di Discourse.

Uso questo script sul blog (è un motore di siti statici chiamato Hugo):

<script type="text/javascript">
  DiscourseEmbed = { discourseUrl: 'https://forum.fab.industries/',
                     discourseEmbedUrl: '{{ .Permalink }}' };

  (function() {
    var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
    d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
  })();
</script>

Non ho cambiato nulla di tutto ciò da quando l’ho integrato per la prima volta qualche mese fa.

Tutto ciò che ho cambiato è stato un po’ di CSS personalizzato che ho aggiunto al tema del forum. Lo ripristinerò oggi e vedrò se risolve il problema.

Va bene. Ripristinare il CSS non ha sortito alcun effetto. Era comunque una speranza remota.

Ora sono anche riuscito a confermare che l’incorporamento è rotto in generale. Anche la parte in inglese del blog ha smesso di funzionare. Le nuove pagine rimangono bloccate su “Caricamento discussione…”.

Ora sono abbastanza sicuro che questo si sia rotto quando il mio provider ha aggiornato il mio forum alla versione 3.0.4, ma non so da quale versione mi abbiano aggiornato. Quindi sospetto ancora questa patch in qualche modo:

Penso che il fatto che il browser stia restituendo questi errori relativi al DOM non sia un caso:

Disattivare la CSP nelle impostazioni di amministrazione non sembra risolvere il problema.

Quindi main ha questo

TopicEmbed.import_remote(@embed_url, user: User.find_by(username_lower: username.downcase))

e stable ha questo

TopicEmbed.import_remote(user, @embed_url)

Nota l’ordine dei parametri.

Ora il backport della patch di sicurezza ha modificato la firma della funzione su stable al nuovo ordine dei parametri, quindi

def self.import_remote(import_user, url, opts = nil)

è diventato

def self.import_remote(url, opts = nil)

e ora il parametro url riceve un oggetto User.

La modifica della chiamata alla funzione risolve il problema

diff --git a/lib/topic_retriever.rb b/lib/topic_retriever.rb
index b798df6cd7..6186ce5868 100644
--- a/lib/topic_retriever.rb
+++ b/lib/topic_retriever.rb
@@ -50,6 +50,6 @@ class TopicRetriever
     user = User.where(username_lower: username.downcase).first
     return if user.blank?

-    TopicEmbed.import_remote(user, @embed_url)
+    TopicEmbed.import_remote(@embed_url, user: user)
   end
 end

@blake

8 Mi Piace

Ho inviato una PR che risolve questo problema FIX broken topic embedding because of incomplete security patch (#22088) by communiteq · Pull Request #22184 · discourse/discourse · GitHub

9 Mi Piace

Grazie @RGJ per la correzione, quella PR è ora unita.

4 Mi Piace