Como evitar scripts entre sites no Node JS

Início » Como evitar scripts entre sites no Node JS

Cross-site scripting (XSS) ou “script entre sites” é uma vulnerabilidade de segurança que permite aos invasores injetar scripts maliciosos em sites usando código do lado do cliente. Ele representa uma ameaça significativa porque os invasores podem usá-lo para se passar por usuários, acessar dados confidenciais e até alterar o conteúdo da página do site.

É tão perigoso que em 2021 ficará em segundo lugar na lista de fraquezas comuns das 25 fraquezas mais perigosas. Isso significa que, se você estiver criando um site, deve entender o scripting entre sites e como evitá-lo.

Como funciona o script entre sites?

Antes de entender como o Cross-Site Scripting funciona, é importante entender o que significa a Same Origin Policy (SOP). SOP é uma política de mecanismo de segurança que restringe um site (uma origem) de ler ou gravar em outro site (origem diferente). Ele impede que sites maliciosos enviem código malicioso para sites confiáveis.

Os ataques de script entre sites tentam contornar essa estratégia explorando a incapacidade do navegador de distinguir entre HTML legítimo e código malicioso. Por exemplo, um invasor pode injetar código JavaScript em um site de destino. Suponha que o navegador execute o código e o invasor obtenha acesso a tokens de sessão, cookies e outros dados confidenciais.

Existem três tipos de script entre sites que os hackers usam para invadir sites: reflected, stored, e DOM XSS.

Como evitar scripts entre sites no Node JS

Aqui estão algumas etapas que você pode seguir para evitar scripts entre sites no Node.js.

“Desinfete” a entrada

Um invasor precisa enviar dados para seu aplicativo da Web e exibi-los ao usuário para realizar um ataque XSS. Portanto, a primeira precaução que você deve tomar é “desinfetar” qualquer entrada que seu aplicativo receba dos usuários. Isso é crítico porque detecta dados falsos antes que o servidor os execute. Você pode fazer isso manualmente ou usar uma ferramenta como um validador para acelerar as coisas.

Por exemplo, você pode usar um validador para escapar de tags HTML na entrada do usuário, conforme mostrado abaixo.

import validator from "validator";
let userInput = `Jane <script onload="alert('XSS hack');"></script>`;
let sanitizedInput = validator.escape(userInput);

Se você executasse o código acima, a saída “desinfetada” seria algo assim.

Jane &lt;script onload=&quot;alert(&#x27;XSS hack&#x27;);&quot;&gt;&lt;&#x2F;script&gt;

Limitar a entrada do usuário

Restrinja os tipos de entradas que os usuários podem enviar em formulários por meio de validação. Por exemplo, se você tiver um campo de entrada para e-mail, permita apenas a entrada no formato de e-mail. Dessa forma, você minimiza as chances de um invasor enviar dados incorretos. Você também pode usar um pacote validador para isso.

Leia também: Node JS o que é?

Implementar uma política de cookies somente HTTP

Os cookies armazenam dados em um cache local e os enviam de volta ao servidor via HTTP. Mas os invasores também podem acessá-los pelo navegador usando JavaScript, portanto, são alvos fáceis.

Cookies somente HTTP é uma estratégia para impedir que scripts do lado do cliente acessem dados de cookies. Isso significa que, mesmo que seu aplicativo contenha uma vulnerabilidade e um invasor a explore, eles não poderão acessar o cookie.

Veja um exemplo de como implementar uma política de cookies somente HTTP no Node.js usando o Express:

app.use(express.session({
    secret: "secret",
    cookie: {
        httpOnly: true,
        secure: true
    }
}))

Se um invasor tentar acessar um cookie com o sinalizador httpOnly definido como verdadeiro, como mostrado acima, ele receberá uma string vazia.

Cross-Site Scripting é um alvo fácil para hackers

Embora proteger seu aplicativo seja fundamental, implementá-lo pode ser complicado. Neste post, você aprendeu sobre ataques de script entre sites e como bloqueá-los no Node.js. Sempre certifique-se de “desinfetar” a entrada do usuário quando um invasor explorar uma vulnerabilidade em seu aplicativo para injetar código malicioso em seu servidor. Ao fazer isso, você pode remover o código malicioso do aplicativo antes que ele seja armazenado ou executado.

Leia também: Poderosas técnicas de vendas online e presencial

brayan

Brayan Monteiro

Bacharel em Sistemas de Informação pela Faculdade Maurício de Nassau e desenvolvedor PHP. Além de programador, produzo conteúdo e gerencio blogs. Sou especialista em desenvolvimento de software, SEO de sites e em negócios digitais.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

12 + sete =