Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice

...

Índice
excludeÍndice

Introdução

...

O RM é desenvolvido baseado nos princípios fundamentais de segurança abordados pelo OWASP(Open Web Application Security Project). Porem existem configurações que permitem ajustar o nível de segurança da aplicação.

As configurações referentes ao item "Portal Corpore.Net e Web API" podem ser feitas automaticamente pelo instalador "TOTVS RM Portal". As demais configurações devem ser feitas manuais.

Abaixo falaremos um pouco de cada uma dessas configurações que devem ser feitas manualmente. 

       Portal

Portal

...

  • Robots.txt e Indexação em Buscadores/Rastreadores

Documentação: Robots.txt e Indexação em Buscadores/Rastreadores (caso este arquivo não exista em seu Default Web Site no IIS nosso instalador irá adicioná-lo se optar em habilitar a segurança no portal);

  • SSL no IIS

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

  • Reduzir o nível de detalhamento de mensagens exibidas

    par

    para o usuário

    .

...

Para isso basta inserir a tag abaixo dentro da sessão AppSettings do web.config do portal Corpore.Net.

...

Bloco de código
languagexml
<add key=”StackTraceVisible” value=”False” />

...

Nota

A partir das versões 12.1.2310, 12.1.2306.144, 12.1.2302.201 e 12.1.2209.268, a tag StackTraceVisible é definida como false por padrão.

...

Para mais detalhes veja:

...

https://www.owasp.org/index.php/Improper_Error_Handling

  • Desabilitar o Debug: "ASP.NET DEBUG Method Enabled"

No web.config, no nó <system.web>:

Bloco de código
languagexml
<compilation  debug="false" />

Por padrão, vem desabilitado no Corpore.Net, mas habilitado no FrameHTML.

Referência: https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/aspnet/development/disable-debugging-application

  • Como fazer para remover do cabeçalhos 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
    • Bloco de código
      languagexml
      <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:

  •   

    • Bloco de código
      languagexml
      <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:

  •   
    • Bloco de código
      languagexml
      <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:

Bloco de código
languagexml
<pages validateRequest="true" [...] viewStateEncryptionMode="Always" />

Referência: https://learn.microsoft.com/en-us/dotnet/api/system.web.ui.page.viewstateencryptionmode?view=netframework-4.8

  • Ativar a flag “Secure” para os cookies de sessão

    .

Importante para garantir que os cookies, responsáveis por armazenar alguns dados de autenticação (não inclui usuário e senha) e outras informações, seja transportado em segurança. Basta seguir os passos listados no link abaixo:

...

https://stackoverflow.com/questions/1442863/how-can-i-set-the-secure-flag-on-an-asp-net-session-cookie

  • Habilitar HSTS na aplicação

    .

Isso garante que sua comunicação será feita com segurança, ou seja, utilizando o SSL. Para mais informações acesse:

https://www.poppastring.com/blog/UsingHTTPStrictTransportSecurityInIIS.aspx

  • Definir HttpOnlyCookies como true

A configuração HttpOnlyCookies definida como true ajuda a atenuar as ameaças de scripts entre sites que pode resultar em roubo de cookies.

https://msdn.microsoft.com/library/ms228262%28v=vs.100%29.aspx

  • Remover a permissão de listar os artefatos do ambiente diretamento no

    IIS. 

    IIS 

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/directorybrowse


Comunicação Portal / RM.exe com o HOST

...

  • 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. Porem para aumentar a segurança e fazer que as informações trafeguem criptografadas e com ainda mais segurança, sugerimos que habilitem o SSL no HOST. Para isso sigam a documentação abaixo:
    http://tdn.totvs.com.br/display/LRM/Habilitar+SSL+no+Host
    OBS.: A documentaçãoa cima contempla como aumentar a segurança também dos Web Services providos pelo HOST.

...


Portal Corpore.Net e Web API

...

  • Para garantir que a comunicação com o portal Web Api seja mais segura, foram adicionadas na sessão systemsessão system.webServer >> httpProtocol >> customHeaders, três novas entradas que poderam ser customizadas pelo usuário, são elas:
Nome da entradaValor padrãoValores PossíveisDescrição
1X-Content-Type-Optionsnosniffnosniff
Para evitar o sniffing do tipo MIME, você pode adicionar o cabeçalho X-Content-Type-Options. Isso torna mais difícil para os hackers adivinharem o tipo certo de mime, inspecionando o conteúdo.
2X-Xss-Protection0; mode=block
0
1
0; mode=block
1; mode=block
0; report=<reporting-uri>
1; report=<reporting-uri>
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.
3X-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 criem iframe para o seu site, a fim de induzi-lo a clicar em links que você nunca quis. Se você estiver usando a ASP.NET MVC 5 ou mais recente, esse cabeçalho será adicionado automaticamente.


Configurações feitas pelo Instalador RM

Para que o instalador inclua essas tags, é necessário clicar em 'Sim' no assistente de instalação quando for solicitada permissão para habilitar a segurança.
As 3 tags de configurações acima podem ser configuração a seguir são aplicadas automaticamente durante a instalação do Patch RM Portal. Para que o instalador inclua as tags com os valores padrão é necessário  clicar em 'Sim' no Wizard de instalação quando solicitado permissão para Habilitar a SegurançaRM e são definidas com os seguintes valores:

  • Cache-Control
    • Valor: no-store
    • Descrição: Evita que o conteúdo seja armazenado em cache, aumentando a segurança ao garantir que as informações não sejam mantidas no cache do navegador.
  • X-AspNet-Version
    • Valor: null
    • Descrição: Oculta a versão do ASP.NET, prevenindo a exploração de vulnerabilidades conhecidas dessa versão específica.
  • X-Content-Type-Options
    • Valor: nosniff
    • Descrição: Previne que o navegador tente inferir o tipo de conteúdo do arquivo, o que ajuda a evitar ataques de tipo MIME.
  • X-Frame-Options
    • Valor: SAMEORIGIN
    • Descrição: Evita que a página seja carregada em um iframe de um domínio diferente, prevenindo ataques de clickjacking.
  • X-PoweredBy
    • Valor: null
    • Descrição: Remove a informação sobre a tecnologia usada no servidor, dificultando a identificação e exploração de possíveis vulnerabilidades específicas da tecnologia.
  • X-Xss-Protection
    • Valor: 1; mode=block
    • Descrição: Habilita a proteção contra ataques XSS (Cross-Site Scripting) no navegador e bloqueia a página quando um ataque é detectado.
  • Contenty Security Policy
    • Valor: default-src 'self'
    • Descrição: Restringe o carregamento de recursos de fontes não confiáveis, permite apenas recursos do mesmo domínio.

Passo a passo para configuração manual dos headers:

  • Acessar o Gerenciador do IIS (Internet Information Services):
    • Abra o Gerenciador do IIS no servidor onde o portal está hospedado.
  • Selecionar o Site ou Aplicação:
    • Na árvore de conexões à esquerda, selecione o site ou aplicação onde você deseja adicionar os headers.
  • Abrir a Opção "HTTP Response Headers":
    • No painel central, clique duas vezes na opção "HTTP Response Headers".
  • Adicionar Cada Header:
    • Para cada header listado acima:
    • Clique em "Add..." no painel à direita.
    • No campo "Name", insira o nome do header (por exemplo, Cache-Control).
    • No campo "Value", insira o valor correspondente (por exemplo, no-store).
    • Clique em "OK" para salvar.
  • Verificar Configuração:
    • Após adicionar todos os headers, verifique se eles aparecem corretamente na lista conforme a imagem fornecida.