Article image
Ryan Kairo
Ryan Kairo06/01/2024 14:36
Compartilhe

Defendendo-se Contra XSS, CSRF e Mais


    Como sabemos, o vasto ecossistema de ferramentas e tecnologias disponíveis online facilita a execução de ataques em websites.

    Há vários tutoriais nos quais qualquer indivíduo pode agir em qualquer site e assim realizar um ataque, sendo o mais simples deles os ataques XSS.

    Alguns países, como o Brasil, não dedicam bastante atenção à segurança de websites governamentais, o que acaba favorecendo ataques e até mesmo vazamentos de dados, como o antigo ataque que resultou no vazamento de 220 milhões de dados.

    Imagem ilustrativa

    image

    https://exame.com/tecnologia/vazamento-de-dados-de-220-milhoes-de-brasileiros-nao-aconteceu-da-noite-para-o-dia/

    Então neste artigo, exploraremos os desafios comuns de segurança em aplicações Angular e como implementar medidas eficazes para proteger nossos projetos de ataques simples.

    1. Cross-Site Scripting (XSS):

    O XSS é uma ameaça comum em aplicações web e pode ocorrer quando dados não confiáveis são inseridos diretamente no DOM. Angular oferece defesas robustas contra XSS através da técnica de interpolação segura. Utilizando a interpolação segura, o Angular garante que qualquer código malicioso seja tratado como dados, impedindo sua execução.

    // Exemplo sem nenhuma segurança
    const userInput = 'html malicioso'; // o usuário pode colocar tags <script> aqui 
    const Html = `<div>${userInput}</div>`);
    
    // Exemplo de interpolação segura
    const userInput = 'Texto seguro';
    const Html = this.sanitizer.bypassSecurityTrustHtml(`<div>${userInput}</div>`);
    

    2. Cross-Site Request Forgery (CSRF):

    O CSRF ocorre quando um atacante induz um usuário a executar ações indesejadas em uma aplicação na qual o usuário está autenticado. Para mitigar esse risco, Angular utiliza tokens anti-CSRF, geralmente incorporados em formulários.

    // Exemplo de token anti-CSRF em Angular
    const csrfToken = this.http.get('/api/csrf-token');
    this.http.post('/api/sensitive-operation', data, { headers: { 'X-CSRF-Token': csrfToken } });
    

    3. Controle de Acesso:

    Garantir que os usuários tenham acesso apenas às partes da aplicação apropriadas é crucial. Angular oferece recursos de roteamento e guarda de rotas para controlar o acesso com base nas permissões do usuário.

    // Exemplo de guarda de rota em Angular
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    if (this.authService.isAdmin()) {
      return true;
    } else {
      this.router.navigate(['/unauthorized']);
      return false;
    }
    }
    

    4. Autenticação e Autorização:

    Implementar um sistema de autenticação seguro é essencial. Angular facilita a integração com diferentes esquemas de autenticação, como OAuth e JWT. Além disso, garantir que as autorizações sejam aplicadas corretamente em todas as camadas da aplicação é fundamental para evitar brechas de segurança.

    // Exemplo de autenticação com JWT em Angular
    const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);
    this.http.get('/api/secure-data', { headers });
    

    5. Segurança no Backend:

    A segurança não é responsabilidade exclusiva do frontend. É crucial implementar práticas seguras no backend, como validação adequada de entrada, prevenção de injeção de SQL e proteção contra ataques de força bruta.

    Obrigado por ler!

    Referências e outros artigos:

    Angular security best practices
    OWASP Top Ten
    https://angular.io/guide/security
    https://www.sans.org/cloud-security/securing-web-application-technologies/
    Compartilhe
    Comentários (4)

    JP

    José Paula - 10/01/2024 20:23

    Ótimo artigo, ryan

    Ryan Kairo
    Ryan Kairo - 10/01/2024 20:05

    Obrigado Gabriel!

    Ryan Kairo
    Ryan Kairo - 10/01/2024 20:02
    Obrigado!
    Rafael Santos
    Rafael Santos - 06/01/2024 15:19

    Segurança nunca é demais.


    Gostei do conteúdo.