Verständnis/Arbeit mit CSP, iframes, Vorfahren

Wir haben Discourse auf site1 installiert. Wir besitzen/verwalten site2.tld und möchten über ein iFrame von einer Seite dort auf das Forum zugreifen. Ich bin kein Experte für CSP, daher wird Hilfe geschätzt.

Ich möchte die Ancestor-Beschränkungen nicht deaktivieren, aber vorübergehend habe ich das Frame Ancestor CSP deaktiviert:

image

Der bisherige HTML-Code lautet:

<iframe
  style="position:absolute;width:100vw;height:100vh"
  src="https://forum.site1.tld">
</iframe>

Dies führt immer noch zu:

Firefox kann diese Seite nicht öffnen

Um Ihre Sicherheit zu gewährleisten, wird forum.site1.org Firefox nicht erlauben, die Seite anzuzeigen, wenn eine andere Seite sie eingebettet hat. Um diese Seite anzuzeigen, müssen Sie sie in einem neuen Fenster öffnen.

Ich habe mir “Embedding” angesehen, aber diese Funktion scheint einem anderen Zweck zu dienen. Wir möchten nicht auf ein einzelnes Thema beschränken, und der Benutzer wird nicht angemeldet sein. Anfangs ist es in Ordnung, wenn der Benutzer sich nicht anmeldet und das gesamte Forum schreibgeschützt verfügbar ist.

Vorschläge? Fragen?

Danke!

Betten Sie noch jemand seinen Site1-Discourse in seine Site2 ein? Danke!

Wir empfehlen nicht, Discourse vollständig über iframes in eine andere Website einzubetten, noch testen wir dies.\n\nStattdessen empfehlen wir, jede Website auf ihrer eigenen Domain zu betreiben, Links und Single Sign-On zu verwenden und Discourse so zu gestalten, dass es dem Erscheinungsbild Ihrer Hauptwebsite entspricht.

2 „Gefällt mir“

Verstanden. Danke!

Die langfristigen Folgen zu verstehen, haben wir CSP vorübergehend deaktiviert, erhalten aber immer noch eine CSP-Warnung von Firefox. Ist ein Neustart erforderlich?

Hier ist die Anwendung/Herausforderung. Vielleicht gibt es eine einfache Lösung…

Es gibt einen Discourse-Server und wie üblich eine beliebige Anzahl von Benutzerkonten und Gästen. Registrierte Benutzer haben eine App, die einen lokalen Webserver hostet. Eine Webseite wird in dieser App erstellt und über http://192.168.1.1:8080 vom lokalen Browser aus aufgerufen. Diese Webseite bietet das Forum über einen IFrame an.

Wir haben keine Kontrolle über die Subnetze, die den Inhalt bereitstellen, daher kann die IP aus jedem gängigen NAT/DHCP stammen. Wir haben jedoch die volle Kontrolle über Folgendes:

  • Die Discourse-Installation und den Server.
  • Den bereitgestellten Inhalt.
  • Die Portnummer ist in der Regel 8080, konfigurierbar durch den Benutzer, aber niemals 80 oder 443.
  • Da es sich um lokale Inhalte handelt und nicht um geschäftskritische Daten, ist dies nicht SSL-gesichert.
  • Benutzer müssen ein Discourse-Konto haben und sich bei Discourse anmelden, um Schreibzugriff zu erhalten.

In Bezug auf die Sicherheit:

  • Das öffentliche Forum ist über den Hostnamen im Netz zugänglich.
  • Der Netzzugriff ist natürlich immer SSL-gesichert.
  • Niemand kann Foreninhalte erstellen, es sei denn, er ist angemeldet.
  • Ja, die lokale Seite mit dem IFrame wird als HTTP bereitgestellt, aber die IFrame-Quelle ist HTTPS://forum.site.tld. (Dieser Protokollunterschied könnte der Grund für den Fehler beim Zugriff auf das Forum sein, selbst wenn CSP deaktiviert ist.)
  • Sobald der Benutzer seinen Browser startet, muss er ein Passwort eingeben, um auf den lokalen Server zuzugreifen. Wir könnten diese Seite SSL-aktivieren, falls erforderlich, um die Konsistenz zwischen dieser übergeordneten Seite und dem IFrame zur SSL-aktivierten Forumseite zu gewährleisten.
  • Wir haben keine Absicht und keine Absicht, über den IFrame in Discourse zu skripten. Alles, was wir tun wollen, ist, das Forum in einem Container zu hosten.

Hier sind einige zufällige Ideen, die möglicherweise keinen Wert haben:

  1. Ermöglichen Sie Benutzern, einen API-Schlüssel von ihrer Discourse-Kontoseite abzurufen, den sie in die App eingeben können, der dann als Cookie oder auf andere Weise an Discourse übergeben wird. Dies bestätigt, dass der Benutzer, obwohl er nicht CORS- oder CSP-konform ist, die Berechtigung zum Zugriff auf die Ressourcen hat.
  2. Lassen Sie die App ein Token in die IFrame-URI zu Discourse einfügen. Verwenden Sie gleichzeitig einen API-Aufruf, um Discourse anzuweisen, eingehende Verbindungen mit diesem Token zuzulassen. (Ja, das müsste programmiert werden)
  3. Noch peinlicher… Erstellen Sie eine Seite auf einer Community-Website, die einen IFrame für den Subnetzinhalt und einen weiteren IFrame zum Forum öffnet. Diese eine Seite kann für den Cross-Origin-Zugriff autorisiert werden.
  4. Geben Sie die Bemühungen auf, die Richtlinien zu umgehen, und verwenden Sie target=window, um Discourse außerhalb des Anwendungsfensters zu öffnen.

Gibt es Ideen, ohne sofort auf Option 4 zurückzugreifen? Danke!