- VISÃO GERAL
- CONFIGURAÇÕES INICIAIS
- CONFIGURAÇÕES NO Web.Config
01. VISÃO GERAL
A partir da versão 12.1.2502, o PEP RM incorporará novas configurações de segurança e recomendará práticas adicionais. Este artigo visa apresentar recomendações para aprimorar a segurança, integridade e confidencialidade dos dados no PEP RM, assegurando um ambiente operacional mais protegido.
02. CONFIGURAÇÕES INICIAIS
- Utilizar um certificado SSL válido (Recomendado)
Para garantir que a comunicação com o portal seja segura, habilite o SSL para a sua aplicação no IIS. Isso é recomendado principalmente quando o portal é exposto em uma DMZ ou servidor com acesso via rede pública:
Para isso é necessário adquirir um certificado através de uma autoridade certificadora confiável e seguir as documentações. Para mais informações acesse:
https://en.wikipedia.org/wiki/SSL
https://www.digicert.com/ssl-certificate-installation-microsoft-iis-7.htm
https://www.digicert.com/ssl-certificate-installation-microsoft-iis-8.htm
- Configurar bloqueio de usuário ao inserir senha incorreta no login (Recomendado)
CONFIGURAÇÃO DE BLOQUEIO POR ERRO AO LOGAR NO SISTEMA - Linha RM - TDN
- Habilitar SSL/TLS no Host (Opcional)
A comunicação com o HOST já é feita com segurança e os dados não são trafegados em “plain text” por padrão. Porém para aumentar a segurança e fazer com que as informações trafeguem criptografadas e com ainda mais segurança, sugerimos que habilitem o SSL no HOST. Ver: Habilitar SSL/TLS no Host - Linha RM - TDN
03. CONFIGURAÇÕES NO Web.Config
Desabilitar o VERB TRACE
Para realizar as configurações abaixo será necessário acessar o arquivo web.config da pasta do pep em FrameHTML
O trecho de código abaixo deve ser incluído no nó <system.webServer>
<security>
<requestFiltering removeServerHeader="true">
<verbs allowUnlisted="true">
<add verb="TRACE" allowed="false" />
</verbs>
</requestFiltering>
</security>
Ou a configuração pode ser feita pelo IIS:
Desabilitar o Debug: "ASP.NET DEBUG Method Enabled"
No web.config, no nó <system.web>
<compilation debug="false" />
Referência: Disable debugging for ASP.NET application - ASP.NET | Microsoft Learn
Remover do cabeçalho de resposta HTTP dos seguintes itens
- Server
Esse cabeçalho de resposta pode ser removido com uma configuração no arquivo web.config, no nó <system.webServer> adicione:
<security> <requestFiltering removeServerHeader ="true" /> </security>
- X-Powered-By
Esse cabeçalho de resposta pode ser removido com uma configuração no arquivo web.config, no nó <system.webServer> adicione:
<httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol>
- X-AspNet-Version
Esse cabeçalho de resposta pode ser removido com uma configuração no arquivo web.config, no nó <system.web> adicione:
<httpRuntime enableVersionHeader="false" />
Criptografar o ViewState
O ViewState, caso não esteja criptografado, pode abrir brechas para roubo de informações sensíveis.
Para criptografá-lo, no web.config, no nó <system.web>, adicionar a opção viewStateEncryptionMode="Always" ao final da tag pages:
<pages validateRequest="true" [...] viewStateEncryptionMode="Always" />
Configurando os Headers
| Atributo | Valores possíveis | Descrição | Referência |
|---|---|---|---|
| X-Content-Type-Options | nosniff | Para evitar o sniffing do tipo MIME, você pode adicionar o cabeçalho X-Content-Type-Options. | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options |
| X-Xss-Protection | 0 1 0; mode=block | O X-Xss-Protection é um recurso implementado no navegador mais moderno, que interrompe o carregamento da página quando um ataque de script entre sites é detectado. | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection |
| X-Frame-Options | X-Frame-Options: DENY X-Frame-Options: SAMEORIGIN X-Frame-Options: ALLOW-FROM https://example.com/ | O cabeçalho X-Frame-Options garante que os hackers não cX-Content-Type-Optionsriem iframe para o seu site, a fim de induzi-lo a clicar em links que você nunca quis. | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options |
| Content Security Policy (CSP) | default-src script-src style-src (Obrigatório incluir 'unsafe-inline') img-src object-src base-uri connect-src (incluir a api do host, a mesma configurada no config.json) font-src frame-src img-src | A diretiva Content-Security-Policy (CSP) é um cabeçalho de segurança importante que ajuda a mitigar os riscos de ataques como XSS (Cross-Site Scripting) e outros tipos de ataques baseados em injeção de código. Ela permite que os desenvolvedores controlem quais recursos são carregados em uma página web e de onde eles podem ser carregados. | https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP |
Sugestão de configuração:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings>
<add key="StackTraceVisible" value="false" />
</appSettings>
<system.web>
<compilation debug="true" />
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="Content-Security-Policy" />
<add
name="Content-Security-Policy"
value="default-src 'self' http://*.rm.cloudtotvs.com.br https://*.rm.cloudtotvs.com.br;
script-src 'self' https://www.googletagmanager.com https://*.memed.com.br https://cdn.rudderlabs.com https://static.hotjar.com https://script.hotjar.com 'sha256-udd7tgqqiuE63xVVImVw4X2698oKyeOHMxP6WdpSz9g=' https://static.cloudflareinsights.com;
style-src 'self' 'unsafe-inline';
object-src 'none';
base-uri 'self';
connect-src data: 'self' wss://ws.hotjar.com https://content.hotjar.io https://vc.hotjar.io https://metrics.hotjar.io ws://*.rm.cloudtotvs.com.br:8051 wss://*.rm.cloudtotvs.com.br:8051 https://*.rm.cloudtotvs.com.br:8051 http://*.rm.cloudtotvs.com.br:8051 https://api.rudderlabs.com https://*.memed.com.br https://ipv4.icanhazip.com https://api.ipify.org https://*.totvs.io https://dtavoiceapi.azurewebsites.net https://voice.dta.totvs.io;
font-src 'self';
frame-src 'self' https://integrations.memed.com.br https://totvs.daily.co https://www.googletagmanager.com;
img-src 'self' data: https://cdn.jsdelivr.net;
manifest-src 'self';
media-src 'self';
worker-src 'none';" />
<add name="Permissions-Policy" value='camera=(self "https://totvs.daily.co"), microphone=(self "https://totvs.daily.co"), geolocation=(self), fullscreen=(self)' />
<add name="Access-Control-Allow-Origin" value="https://*.rm.cloudtotvs.com.br" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" />
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<security>
<requestFiltering removeServerHeader="true">
<verbs>
<add verb="TRACE" allowed="false" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
<system.web>
<httpRuntime enableVersionHeader="false" />
<pages viewStateEncryptionMode="Always" />
</system.web>
</configuration>
Onde tiver o {HOST_API_URL}, substituir pelo endereço da api do host, o mesmo apontado no arquivo config.json
ATENÇÃO!
Todas as informações sugeridas acima foram checadas e testadas em um ambiente controlado com o apoio do nosso time de segurança e com resultados de Pentests executados internamente ou externamente pelos nossos clientes. No entanto, é recomendado que as configurações sejam realizadas inicialmente em um ambiente de homologação, devido à variedade e complexidade das configurações e especificidades dos servidores de cada cliente.

