03. CONFIGURAÇÕES NO Web.Config
Desabilitar o VERB TRACEPara realizar as configurações abaixo será necessário acessar o arquivo web.config da pasta do portalpaciente 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" /> |
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
Configurando os HeadersAtributo | 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. Isso torna mais difícil para os hackers adivinharem o tipo certo de mime, inspecionando o conteúdo. | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options | X-Xss-Protection | 0
1
0; mode=block 1; 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="false" />
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="default-src 'self';
script-src 'report-sample' 'self';
style-src 'self' 'unsafe-inline';
object-src 'none';
base-uri 'self';
connect-src 'self' http://localhost:8051 ws://localhost:8051;
font-src 'self';
frame-src 'self';
img-src 'self' data:;
manifest-src 'self';
media-src 'self';
worker-src 'none';" />
<add name="X-Content-Type-Options" value="nosniff" />
<add name="X-Xss-Protection" value="1; mode=block" />
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Cache-Control" value="no-store" />
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
<add name="Cross-Origin-Embedder-Policy" value="require-corp" />
<add name="Cross-Origin-Resource-Policy" value="same-origin" />
<add name="Cross-Origin-Opener-Policy" value="same-origin" />
<add name="Permissions-Policy" value="camera=(self), microphone=(self), geolocation=(self), fullscreen=(self)" />
<add name="Referrer-Policy" value="no-referrer-when-downgrade" />
<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. |
|