ASP.NET
Core
Web - Regras para tornar sua aplicação mais Segura
![]() |
Neste artigo vou apresentar alguns procedimentos básicos para tornar sua aplicação ASP .NET Core MVC mais segura. |
Diferentemente de uma aplicação para desktop ou para dispositivo móvel, uma aplicação Web é executada em um endereço disponível ao público, e, isso é um dos motivos pelos quais a segurança das aplicações Web deve ser olhada com mais cautela e com mais atenção.
![]() |
Embora o framework Asp.Net Core seja desenvolvido com as melhores práticas de segurança, ainda existem algumas vulnerabilidades que precisamos vedar antes e depois do lançamento da nossa aplicação Asp.Net Core em produção.
Vejamos a seguir alguns procedimentos que podemos adotar para vedar essas vulnerabilidades:
1. Torne o seu login mais seguro
A página de login é como uma porta para qualquer aplicativo. Considere um aplicativo como o Painel de administração. Se uma pessoa não autorizada obtiver acesso ao seu aplicativo, ele poderá controlar todo o sistema. Portanto, seu primeiro passo sempre deve ser tornar seu login seguro.
A seguir algumas dicas para tornar o login mais protegido:
a - Utilize credenciais de login complexas
Nunca use nomes de usuário como admin e senhas como 12345, o no. do telefone, a sua data de nascimento ou mesmo o seu nome. Qualquer um pode inferir esses valores e e os robôs serão capazes de descobrir esses tipos de credenciais, em uma fração do tempo que um humano levaria.
b- Proteja o seu login do ataque de força bruta
Os ataques de
força bruta são o tipo mais comum de ataques que usam algoritmos diferentes e
tentam diferentes combinações de nome de usuário ou senha para adivinhar as
credenciais de login. Além disso, muitas tentativas de login podem ocupar seu
servidor, o que pode causar negação de serviço (DoS)
e tempo de inatividade para os usuários do seu aplicativo.
Os ataques de força bruta levam menos tempo para adivinhar nomes de usuário e
senhas simples, mas eles também podem adivinhar combinações complexas tentando
todas as possibilidades.
Então, como proteger nosso aplicativo Asp.Net Core
contra ataques de força bruta?
Aqui estão algumas dicas para evitar a força bruta:
Você deve estar pensando 'Falar é fácil, mas implementar tudo isso não é tão simples...'
Para .NET Core podemos usar a biblioteca HackerSprayCore para defender aplicações MVC e Web API contra força bruta e ataques de negação de serviço.
2. Sempre submeta os dados usando encriptação
Nunca envie
seus dados confidenciais, como senha ou credenciais de cartão de crédito, na
forma de texto aberto, ao servidor para validação. Os hackers podem roubar seus
dados farejando-os antes de enviá-los ao servidor.
Sempre use um algoritmo de hash como md5 ou
SHA256 para algoritmo de senha e criptografia como
AES ou DES no lado do
cliente se estiver usando usando jQuery.
3. Não se esqueça de limpar os cookies ao sair
Ao fazer login em um aplicativo Asp.Net Core, mantemos alguns dados necessários
em Sessões para manter o login do usuário até que
ele efetue o logout. Em alguns aplicativos, definimos o tempo limite da sessão
e, às vezes, não definimos o tempo limite da sessão quando o usuário marca uma
caixa de seleção na página de login em que ele deseja manter o login.
Ao mesmo tempo, o cookie AspNetCore.Session é
adicionado ao navegador para manter o registro do usuário conectado.
Portanto, ao fazer o logout, também precisamos
remover os cookies criados por nosso aplicativo no navegador do usuário,
porque um hacker pode usar essas informações para login não autorizado. Isso
também é chamado de Session fixation atack ou
ataque de fixação de sessão.
4. Sempre use SSL
O acróstico SSL significa - Secure Socket Layer,e
realiza a comunicação entre cliente e servidor criptografada usando uma chave
muito forte.
Portanto, no arquivo Starup.cs do seu aplicativo Asp.Net Core, você pode
configurar para sempre usar a Política segura para cookies.
5. Nunca mantenha dados confidenciais abertos no
seu banco de dados
A grande maioria das aplicações web utilizam um banco de dados para armazenar
dados dos usuários, e, na maioria das vezes os hackers atacam o servidor por
roubar os dados dos usuários.
Suponha que
você tenha armazenado as credenciais de seus usuários, como detalhes de Senhas e
métodos de pagamento em seu banco de dados, de forma clara e aberta. Assim, qualquer pessoa que tenha acesso não autorizado ao seu banco de
dados pode usar indevidamente os dados dos usuários.
Para evitar isso sempre mantenha seus dados confidenciais armazenados usando
Hashing ou Criptografia
no seu banco de dados.
6. Trilhas de auditoria ou criação de log também
são importantes
As trilhas de auditoria ou registro de atividades é realmente importante para
estar ciente do que está acontecendo no seu aplicativo. Se alguém estiver
recebendo muitas tentativas de login com falha, o administrador deverá receber
um email sobre essas tentativas de login com falha.
Vamos supor que um cliente crie um novo usuário ou altere as funções de um
usuário existente, cada atividade deve ser registrada no registro de atividades
da sua aplicação ASP .NET Core.
7. Nunca exiba erros técnicos para o
usuário final
Algumas exceções podem divulgar informações importantes sobre nosso aplicativo
ou, às vezes, até mostrar algumas linhas de código para o usuário final. Os
invasores são espertos, eles podem usar as informações fornecidas por nossa
exceção para violar a segurança da nossa própria aplicação.
Assim, antes de implantar seu aplicativo em produção, verifique se você definiu
sua página de Erro personalizado para todos os tipos de exceções e se efetuou o
log de erros adequado na sua aplicação.
8. Faça o tratamento para evitar o Script entre
sites (XSS)
Nos ataques XSS, os hackers enviam scripts maliciosos via campos de entrada para
roubar credenciais do usuário e outros dados importantes.
Então, como proteger nosso aplicativo principal do Asp.Net contra ataques de
script entre sites ?
Você pode proteger seu aplicativo Web seguindo estas dicas:
Para mais detalhes leia este artigo da Microsoft sobre o assunto : Previnir o XSS na ASP .NET Core
9. Tente ocultar a versão do .NET Core usado
Em todas as
respostas HTTP do servidor que recebemos em troca de nossa solicitação enviada
de um navegador, sempre há as informações da versão no qual o aplicativo é
desenvolvido. Essas informações facilitam o trabalho do atacante, economizando
tempo e direcionando para a versão .Net específica.
Portanto, é necessário lançar mais obstáculos para os hackers e tornar mais
difícil para eles ocultando as informações da versão do .Net Framework.
Veja como ocultar a versão do .Net Core:
Você pode remover o X-Powered-By usando este snippet simples no seu web.config :
|
10. Se projeta do Cross-Site Request Forgery
(Falsificação de solicitação entre sites)
Você conhece a finalidade do atributo [ValidateAntiForgeryToken]
nas suas APIs da Web .Net Core e pode ser possível
que você tenha visto este código asp-antiforgery = "true"
no seu arquivo cshtml também.
Como proteger seu aplicativo do CSRF ?
A tag asp-antiforgery = "true" gera um
anti-forgery token e
o atributo
[ValidateAntiForgeryToken] valida no lado do servidor se o token é
válido ou não, e nos protege da falsificação de solicitações entre sites.
Para saber mais veja este artigo da Microsoft: Previnir XSRF e CSRF
O .Net Core é considerado um dos frameworks mais seguros do mercado, mas mesmoa assim, ainda precisamos manter um olho nas atividades de nosso aplicativo e tomar medidas rápidas em caso de qualquer atividade maliciosa.
E estes são alguns dos procedimentos que se adotados tornarão a sua aplicação mais segura.
Embora nada seja 100% seguro temos a obrigação de usar todos os recursos conhecidos e disponíveis para proteger nossa aplicação.
"E Jesus
clamou, e disse: Quem crê em mim, crê, não em mim, mas naquele que me enviou.
E quem me vê a mim, vê aquele que me enviou.
Eu sou a luz que vim ao mundo, para que todo aquele que crê em mim não permaneça
nas trevas."
João 12:44-46
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core - Macoratti
Conceitos - .NET Framework versus .NET Core - Macoratti
ASP .NET Core - Conceitos Básicos - Macoratti.net
ASP .NET Core MVC - CRUD básico com ADO .NET - Macoratti
ASP .NET Core - Implementando a segurança com ... - Macoratti.net
ASP .NET Core - Apresentando Razor Pages - Macoratti