Im Moment habe ich diese 2 Funktionen, ein für Token zu erzeugen und eine für die Prüfung der Gültigkeit:Ist es sicher, das CSRF-Token auf derselben Seite wie das gesicherte Formular zu generieren?
function getToken() {
if(isset($_SESSION['token'])) {
return $_SESSION['token'];
} else {
$token = //random key generator goes here;
$_SESSION['token'] = $token;
return $token;
}
}
function validateToken($token) {
if ($token == getToken()){
return true;
} else {
return false;
}
}
Und mein Anmeldeformular enthält diesen versteckten Eingang:
<input type="hidden" name="token" value="<?php echo getToken(); ?>">
dies sicher ist? Ich frage, weil, was, wenn Sitzung des legitimen Benutzers abläuft und sie CSRF'd zu diesem Registerformular erhalten und Token wird durch die schädliche Site/iframe selbst erzeugt, weil man nicht bereits in der Sitzung existierte, also gerade gut authentisieren?
Angenommen, der Benutzer bleibt wegen Cookies angemeldet.
Versteh ich die Dinge hier falsch? Kann Remote-Linking wie Iframes keine Sitzungen in Ihrem Backend generieren?
Und ... Sitzungen sind weniger sicher als das, weil ...? – Machavity
@Machavity Entschuldigung, ich verstehe nicht, was Sie sagen wollen. Alles, was ich frage, ist, ob meine Vorgehensweise sicher wäre, weil ich mir vorstelle, das Token auf derselben Seite zu generieren, auf der das Formular irgendwie den Zweck vereitelt, nicht wahr? –
"das Token auf der gleichen Seite wie das Formular generieren" --- Was bedeutet das? CSRF-Token muss unmöglich zu erraten sein. Das ist die einzige Voraussetzung dafür. – zerkms