Questo codice è vulnerabile a un attacco CSRF?

2

Sto utilizzando i token per proteggere da un attacco CSRF ma per far funzionare il pulsante "indietro" riuso i vecchi token se sono impostati. Fornisce ancora una protezione CSRF o un utente malintenzionato può semplicemente impostare il cookie "CSRFtokeneditcustomer" come qualcosa di simile a "Ciao" e ignorare facilmente questa protezione?

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">
    
posta lazersquids mcgee 12.06.2018 - 20:07
fonte

1 risposta

0

Un utente malintenzionato non può impostare i cookie per un attacco CSRF. L'unica cosa che l'attaccante può fare è forzare il browser della vittima a fare una richiesta al server web di destinazione. Supponendo che tu abbia il codice lato server che sta confrontando il campo "CSRFtokeneditcustomer" nel modulo e confrontandolo con il valore nel cookie, dovresti essere al sicuro da CSRF.

    
risposta data 12.06.2018 - 21:34
fonte

Leggi altre domande sui tag