Ir para conteúdo


Foto

Prevenção contra CSRF com utilização de token


  • Por favor, faça o login para responder
1 resposta neste tópico

#1 iso48

iso48

    Member Avançado

  • Membros
  • PipPipPip
  • 58 posts

Postado 07 September 2017 - 06:16

Olá,

 

Estou a desenvolver uma aplicação com EXT JS e PHP.

Independentemente da utlização de SSL, a utilização de um mecanismo de token pode ser uma boa solução de proteção contra incidentes por CSRF.

Já estudei bastante o assunto, existindo muitas soluções completas para PHP, mas estou com dificuldades em conseguir implementar uma solução funcional com EXTJS e PHP.

 

O utilizador alex_cyro disponibilizou amavelmente no GitHub uma excelente aplicação com EXT JS em que usa um mecanismo de token: https://github.com/a...arqadmin-client

Gostei muito desta solução bem estruturada e completa.

Julgo que utiliza localStorage.  

Porém, no lado do servidor,  salvo erro, utiliza Laravel, framework que nunca utilizei, razão pela qual não consegui perceber bem todo o conceito nem implementar uma solução completa inspirada na sua solução.

 

Outra solução possivel no EXTJS era enviar o token em cada Ajax request.  Algo do tipo: 

cfr. https://www.sencha.c...read.php?134125

init: function () {

 Ext.require(["Ext.util.Cookies", "Ext.Ajax"], function(){
    // Add csrf token to every ajax request
    var token = Ext.util.Cookies.get('csrftoken');
    if(!token){
        Ext.Error.raise("Missing csrftoken cookie");
    } else {
        Ext.Ajax.defaultHeaders = Ext.apply(Ext.Ajax.defaultHeaders || {}, {
            'X-CSRFToken': token
        });
    }
 });
}

E do lado do PHP utilizar OOP. Algo do tipo:

cfr. https://www.youtube....h?v=VflbINBabc4

<?php

 class Token {

 public static function generate() {
    $_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(32));
 }

 public static function check($token) {
    if(isset($_SESSION['token']) && $token === $_SESSION['token']){
        unset($_SESSION['token']);
        return true;
    }
    return false;
 }
}
?>

A minha dificuldade principal está em disponibilizar o token no lado do cliente e fazer depois o check do token no lado do servidor.

 

Agradecia orientação nesta matéria para desenvolver iuma solução completa e funcional.

 

Obrigado desde já.



#2 iso48

iso48

    Member Avançado

  • Membros
  • PipPipPip
  • 58 posts

Postado 10 September 2017 - 13:11

Estou a explorar a possibilidade de utilizar ferramentas especificas para proteger contra CSRF.

No site da OWASP é recomendado o CSRFProtector Project

Se algum dos membros do forum utilizou esta ferramenta gostaria de saber se é uma boa solução e se teve dificuldades inesperadas na sua implementação e tudo o mais que poder ser util  sobre este assunto.

Obrigado.






0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos