Başka sayfaya girince CSRF bozulması
Sitemde session ile token tutup csrf doğrulaması yapıyorum ancak kullanıcı sayfa açıkken farklı bir sayfaya girerse yeni girdiği sayfa sessionu değiştirdiği için önceki sayfada işlem yapamıyor. CSRF doğrulamasını aşağıdaki şekilde yapıyorum
init.php dosyamda
if (!isset($_POST['_token'])) {
$_SESSION['_token'] = bin2hex(random_bytes(20));
}
bu şekilde session tanımlıyorum ve doğrulama yapacağım sayfalarda ise bu kodu kullanıyorum.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!post('_token') or post('_token') != session('_token')) {
die('Geçersiz CSRF Token!');
}
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
token'ı rastgele oluşturmak yerine kullanıcının session_id'sini md5 ya da hashleyip oluşturursan oturum süresi boyunca aynı tokenı kullanmış olursun, yine csrf önleminide almış olursun