Í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.

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 para o usuário

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

<add key=”StackTraceVisible” value=”False” />

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>:

<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 ="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" />

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 

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 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.

As 3 tags de configurações acima, quando aplicadas  automaticamente durante a instalação do RM Portal, são definidas com os seguintes valores:

  • X-Frame-Options = SAMEORIGIN
  • X-Content-Type-Options = nosniff
  • X-Xss-Protection = 1; mode=block

Para que o instalador inclua tais tags, é necessário  clicar em 'Sim' no Wizard de instalação quando solicitado permissão para Habilitar a Segurança.