# Entendendo/trabalhando com CSP, iframes, ancestors

**URL:** https://meta.discourse.org/t/understanding-working-with-csp-iframes-ancestors/290317
**Category:** Support
**Created:** [2 Janeiro , 2024 21:23 UTC](https://meta.discourse.org/t/understanding-working-with-csp-iframes-ancestors/290317 "2024-01-02T21:23:21Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![TonyG](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@TonyG](https://meta.discourse.org/u/TonyG)
#### Post date: [2 Janeiro , 2024 21:23 UTC](https://meta.discourse.org/t/understanding-working-with-csp-iframes-ancestors/290317/1 "2024-01-02T21:23:21Z")

</div>

Temos o Discourse instalado no site1. Possuímos/administramos o site2.tld e queremos acessar o fórum via iFrame de uma página lá. Não sou habilidoso na arte de CSP-fu, então a assistência é apreciada.

Não quero desabilitar as restrições de ancestralidade, mas temporariamente, desmarquei o CSP de ancestralidade de frame:

![image](https://global.discourse-cdn.com/meta/original/4X/d/9/a/d9aa33ec8010a96b6cef50b9d17215b2a24ae9e1.png)

O HTML até agora é:

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

```

Isso ainda resulta em

> O Firefox não consegue abrir esta página  
> Para proteger sua segurança, [forum.site1.org](http://forum.site1.org) não permitirá que o Firefox exiba a página se outro site a incorporou. Para ver esta página, você precisa abri-la em uma nova janela.

Olhei em Incorporar, mas esse recurso parece servir a um propósito diferente. Não queremos limitar a um único tópico, e o usuário não estará logado. Inicialmente, tudo bem se o usuário não fizer login e todo o fórum estiver disponível como somente leitura.

Sugestões? Perguntas?

Obrigado!

---

<div class="post-metadata">

### Author: ![TonyG](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@TonyG](https://meta.discourse.org/u/TonyG)
#### Post date: [12 Janeiro , 2024 15:10 UTC](https://meta.discourse.org/t/understanding-working-with-csp-iframes-ancestors/290317/2 "2024-01-12T15:10:30Z")

</div>

Alguém mais está incorporando seu site1 Discourse em seu site2? Obrigado!

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [12 Janeiro , 2024 15:31 UTC](https://meta.discourse.org/t/understanding-working-with-csp-iframes-ancestors/290317/3 "2024-01-12T15:31:47Z")

</div>

Não recomendamos, nem testamos, o uso do Discourse totalmente incorporado em outro site via iframes.

Em vez disso, recomendamos que cada site esteja em seu próprio domínio, usando links, login único e estilizando o Discourse para corresponder ao visual do seu site principal.

---

<div class="post-metadata">

### Author: ![TonyG](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@TonyG](https://meta.discourse.org/u/TonyG)
#### Post date: [12 Janeiro , 2024 15:56 UTC](https://meta.discourse.org/t/understanding-working-with-csp-iframes-ancestors/290317/4 "2024-01-12T15:56:35Z")

</div>

Entendido. Obrigado!

---

<div class="post-metadata">

### Author: ![TonyG](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@TonyG](https://meta.discourse.org/u/TonyG)
#### Post date: [29 Janeiro , 2024 23:45 UTC](https://meta.discourse.org/t/understanding-working-with-csp-iframes-ancestors/290317/5 "2024-01-29T23:45:07Z")

</div>

Compreendendo as consequências a longo prazo, desativamos temporariamente o CSP, mas ainda recebemos um aviso de CSP do Firefox. É necessário reiniciar?

 ![image](https://global.discourse-cdn.com/meta/original/4X/c/8/e/c8e07136ca29f6130695232f1c15133ee62813d7.png)

Aqui está a aplicação/desafio. Talvez haja uma solução fácil…

Existe um servidor Discourse e, como de costume, qualquer número de contas de usuário e convidados. Usuários registrados têm um aplicativo que hospeda um servidor web local. Uma página web é criada neste aplicativo e acessada a partir de um navegador local como [http://192.168.1.1:8080](http://192.168.1.1:8080). Essa página web oferece o fórum via IFrame.

Não temos controle sobre as sub-redes que servem o conteúdo, então o IP pode ser de qualquer NAT/DHCP comum. Mas temos controle total sobre o seguinte:

- A instalação e o servidor Discourse.
- O conteúdo que é servido.
- A porta geralmente é 8080, configurável pelo usuário, mas nunca será 80 ou 443.
- Como este é conteúdo local e não é crítico, não é protegido por SSL.
- Os usuários devem ter uma conta Discourse e devem fazer login no Discourse para acesso de escrita.

Quanto à segurança:

- O fórum público é acessível pela rede via nome de host.
- O acesso à rede é, claro, sempre protegido por SSL.
- Ninguém pode criar conteúdo no fórum a menos que esteja logado.
- Então, sim, a página local com o IFrame é servida como HTTP, mas a origem do IFrame é [HTTPS://forum.site.tld](HTTPS://forum.site.tld). (Essa diferença de protocolo pode ser o que está causando a falha no acesso ao fórum, mesmo com o CSP desativado.)
- Assim que o usuário iniciar seu navegador, para acessar o servidor local, ele precisará inserir uma senha. Poderíamos habilitar SSL nessa página, se necessário, para manter a consistência entre essa página ancestral e o IFrame para o site do fórum habilitado para SSL.
- Não temos ou temos a intenção de usar scripts através do IFrame para o Discourse. Tudo o que queremos fazer é hospedar o fórum em um contêiner.

Aqui estão algumas ideias aleatórias que podem não ter mérito:

1. Permitir que os usuários obtenham uma chave de API de sua página de conta Discourse, que eles podem colocar no aplicativo, que então será passada para o Discourse em um cookie ou de alguma outra forma. Isso confirma que, embora o usuário não seja compatível com CORS ou CSP, ele tem autorização para acessar os recursos.
2. Fazer com que o aplicativo injete um token no URI do IFrame para o Discourse. Simultaneamente, usar uma chamada de API para fazer com que o Discourse permita conexões de entrada com esse token. (Sim, isso precisaria ser codificado)
3. Ficando ainda mais estranho… Criar uma página em um site comunitário que abra um IFrame para o conteúdo da sub-rede e outro IFrame para o fórum. Este único site pode ser autorizado para acesso cross-origin.
4. Desistir de tentar contornar as políticas e usar target=window para abrir o Discourse fora da janela do aplicativo.

Sem recorrer imediatamente à opção 4… alguma ideia? Obrigado!
