Histórico da Página
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 ( 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 );
- 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 o usuário:
Para isso basta inserir a tag abaixo dentro da sessão AppSettings do web.config do portal Corpore.Net.
Informações |
---|
A partir da versão 12.1.2209 por padrão o StackTraceVisible é definido como false. |
<add key=”StackTraceVisible” value=”False” />
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" />
- 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" />
- 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:
- 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 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:
Nº | Nome da entrada | Valor padrão | Valores Possíveis | Descrição |
---|---|---|---|---|
1 | X-Content-Type-Options | nosniff | nosniff | 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. |
2 | X-Xss-Protection | 0; mode=block | 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. |
3 | 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 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.