настоящее время у меня эти 2 функции, один для создания маркера и один для проверки достоверности:Безопасно ли генерировать токен CSRF на той же странице, что и защищенная форма?
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;
}
}
И моя регистрационная форма включает в себя этот скрытый вход:
<input type="hidden" name="token" value="<?php echo getToken(); ?>">
Является ли это безопасно? Я спрашиваю, что, если сессия законного пользователя истекает, а затем они получают CSRF'd в эту регистрационную форму, а токен генерируется самим вредоносным сайтом/iframe, потому что один из них еще не существует в сеансе, поэтому аутентификация просто прекрасна?
Предполагается, что пользователь остается в системе из-за куки.
Я понимаю, что здесь неправильно? Не удается ли удаленное связывание, например iframe, генерировать сеансы в вашем бэкэнд?
И ... сеансы менее безопасны, чем это, потому что ...? – Machavity
@Machavity Извините, не могу понять, что вы пытаетесь сказать. Все, о чем я прошу, заключается в том, что мой подход будет безопасным, потому что я предполагаю, что создаю токен на той же странице, что и форма, которая побеждает цель, не так ли? –
"Создание маркера на той же странице, что и форма" --- что это значит? Невозможно догадаться токен CSRF. Это единственное требование для него. – zerkms