"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Compreendendo e prevenindo a falsificação de solicitações entre sites (CSRF) em JavaScript

Compreendendo e prevenindo a falsificação de solicitações entre sites (CSRF) em JavaScript

Publicado em 2024-11-08
Navegar:125

Understanding and Preventing Cross-Site Request Forgery (CSRF) in JavaScript

Introdução

No cenário em constante evolução da segurança da web, a falsificação de solicitações entre sites (CSRF) continua sendo uma ameaça crítica que os desenvolvedores devem enfrentar para garantir a integridade e a segurança dos aplicativos da web. Nesta postagem do blog, vamos nos aprofundar no que é CSRF, como ele pode afetar seus aplicativos e fornecer soluções práticas para evitar ataques CSRF usando JavaScript. Ao final, você terá um conhecimento sólido de CSRF e de como proteger seus aplicativos contra essa vulnerabilidade de segurança comum.

O que é CSRF?

Cross-Site Request Forgery (CSRF) é um tipo de ataque que engana um usuário para que execute ações em um aplicativo da web no qual ele está autenticado. Ao contrário do Cross-Site Scripting (XSS), que explora a confiança do usuário em um determinado site, o CSRF explora a confiança do site no navegador do usuário.

Como funcionam os ataques CSRF

Os ataques CSRF normalmente envolvem três etapas principais:

1. Autenticação da vítima: A vítima faz login em um site legítimo (por exemplo, seu banco).

2. Solicitação maliciosa: O invasor engana a vítima para que ela visite um site malicioso que envia uma solicitação ao site legítimo em nome da vítima.

3. Execução: O site legítimo processa a solicitação porque ela parece vir do usuário autenticado, resultando em ações indesejadas, como transferência de fundos ou alteração de detalhes da conta.

Exemplo de ataque CSRF

Considere um cenário em que o site de um banco permite transferências de dinheiro por meio de uma simples solicitação GET:

Click here to win $1000!

Se a vítima clicar neste link enquanto estiver logada em sua conta bancária, a transferência será executada sem o seu consentimento.

Prevenção de ataques CSRF

Para evitar ataques CSRF, os desenvolvedores podem implementar diversas estratégias:

1. Padrão de token sincronizador (tokens CSRF)
2. Cookies SameSite
3. Cookie de envio duplo

1. Padrão de token sincronizador (tokens CSRF)

Um dos métodos mais eficazes para prevenir ataques CSRF é usar tokens CSRF. Um token CSRF é um valor único, secreto e imprevisível gerado pelo servidor e enviado ao cliente. Este token deve ser incluído em qualquer solicitação de alteração de estado feita pelo cliente.

Implementação passo a passo:

1. Gere um token CSRF:

const generateCSRFToken = () => {
    return crypto.randomBytes(24).toString('hex');
};

2. Envie o token CSRF para o cliente:

Em seu formulário HTML, inclua o token CSRF como um campo oculto:

3. Valide o token CSRF no servidor:
No lado do servidor, valide o token para cada solicitação de mudança de estado:

const validateCSRFToken = (req, res, next) => {
    const token = req.body.csrf_token;
    if (token === req.session.csrfToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

2. Cookies SameSite

O atributo SameSite para cookies pode mitigar ataques CSRF controlando como os cookies são enviados com solicitações entre sites.

res.cookie('session', 'value', { sameSite: 'Strict' });

3. Cookie de envio duplo

O método de envio duplo de cookie envolve o envio do token CSRF como um cookie e um parâmetro de solicitação.

Implementação passo a passo:

1. Defina o token CSRF como um cookie:

res.cookie('csrfToken', csrfToken, { httpOnly: true });

** Incluir o token nas solicitações: **

** 3. Valide o token no servidor: **

const validateCSRFToken = (req, res, next) => {
    const token = req.cookies.csrfToken;
    const bodyToken = req.body.csrf_token;
    if (token && token === bodyToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

Conclusão

Cross-Site Request Forgery (CSRF) é uma ameaça séria que pode comprometer a segurança de seus aplicativos da web. Ao compreender como funcionam os ataques CSRF e implementar técnicas robustas de prevenção, como tokens CSRF, cookies SameSite e cookies de envio duplo, você pode proteger seus aplicativos e usuários contra essa vulnerabilidade comum. Sempre priorize as melhores práticas de segurança em seu processo de desenvolvimento para garantir uma experiência de usuário segura e protegida.

Implemente hoje mesmo essas técnicas de prevenção de CSRF em seus aplicativos JavaScript e proteja os dados de seus usuários. Compartilhe suas idéias e experiências nos comentários abaixo. Não se esqueça de seguir para obter mais dicas e truques de segurança na web!

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/rigalpatel001/understanding-and-preventing-cross-site-request-forgery-csrf-in-javascript-2ne0?1 Se houver alguma violação, entre em contato com study_golang@163 .com para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3