¿Este código es vulnerable a un ataque CSRF?

2

Estoy utilizando tokens para protegerme de un ataque CSRF, pero para que el botón "Atrás" todavía funcione, reutilizo tokens antiguos si están configurados. ¿Esto todavía proporciona protección CSRF o puede un atacante simplemente configurar la cookie "CSRF tokeneditcustomer" para que sea algo como "hola" y omitir fácilmente esta protección?

if(!isset($_COOKIE["CSRFtokeneditcustomer"])){
        $token = bin2hex(openssl_random_pseudo_bytes(16));//preventCSRF
        setcookie("CSRFtokeneditcustomer", $token, time() + 60 * 60 * 24,'/','',true,true);
    }else{
        $token =$_COOKIE["CSRFtokeneditcustomer"];
    }
    ?>
    <form id="editForm" method="post" action="<?= ROOT."/".$_SESSION['PAGE']['REQUEST']."/" ?>" enctype="multipart/form-data" onsubmit="return validateForm()">
        <div><input type="hidden" name="action" value="editcustomer" /></div>
        <div><input type="hidden" name="add" value="1" /></div>
        <div><input type="hidden" name="fullload" value="<?= (($_REQUEST['fullload']) ? 1 : 0); ?>" /></div>
        <div><input type="hidden" name="edit" value="<?= $this->data['id']; ?>" /></div>
        <div><input type="hidden" name="id" id="id" value="<?= $this->data['id']; ?>" /></div>
        <input name="CSRFtokeneditcustomer" type="hidden" value="<? echo $token?>"/>
        <div id="cms_mainform">
    
pregunta lazersquids mcgee 12.06.2018 - 20:07
fuente

1 respuesta

0

Un atacante no puede establecer cookies para un ataque CSRF. Lo único que puede hacer el atacante es forzar al navegador de la víctima a realizar una solicitud al servidor web de destino. Suponiendo que tenga un código del lado del servidor que está comparando el campo "CSRFtokeneditccustomer" en el formulario y comparándolo con el valor en la cookie, debería estar a salvo de CSRF.

    
respondido por el user52472 12.06.2018 - 21:34
fuente

Lea otras preguntas en las etiquetas