form requests

Status
Niet open voor verdere reacties.

ahermans

Gebruiker
Lid geworden
9 apr 2018
Berichten
9
Hoe kan ik mijn site het beste beveiligen tegen form requests. Ik heb de beveililging van een site getest met OWASP ZAP en er worden steeds enkele records in mijn tabellen geplaatst via form requests via mijn eigen site. Ik maak gebruik van de Content Security Policy, de belangrijkste security headers staan er in en ik valideer de input. Wat is er mogelijk.
 
Gebruik CSRF-protectie :)
Dan maak je een unieke code aan in je formulier die ook in je sessie moet werken.

Code:
<?php
class Csrf {

    public static function makeToken() {
        $max_time    = 60 * 60 * 24;
        $csrf_token  = $_SESSION['csrf_token'];
        $stored_time = $_SESSION['csrf_token_time'];

        if ( $max_time + $stored_time <= time() || empty( $csrf_token ) ) {
            $_SESSION['csrf_token'] = md5( uniqid( rand(), true ) );
            $_SESSION['csrf_token_time'] = time();
        }

        return $_SESSION['csrf_token'];
    }

    public static function isTokenValid( $field ) {
        return $field === $_SESSION['csrf_token'];
    }
}
?>

In je formulier:
Code:
<input type="hidden" name="csrf_token" value="<?= Csrf::makeToken(); ?>">

In je formuliercontrole:
Code:
 <?php
if( Csrf::isTokenValid( $_POST['csrf_token'] ) ) {
    echo 'Is geldig';
} else {
    echo 'Ongeldig';
} 
?>
 
Laatst bewerkt:
Bedankt voor de tip. Ik had zelf al een token ingebouwd op basis van het Session id maar dit is duidelijk niet voldoende. Ik heb nu een anti csrf tooltje gedownload van owasp en dit in de site ingebouwd. heb weer getest en nu wordt er dus niets meer ingevoerd in de tabellen. jouw techniek zal ik als een tweede defensie inbouwen. nogmaals bedankt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan