Merhabalar arkadaşlar öncelikle selamun aleykum bir önceki konumuzda csrf token kullanımını anlattık şimdi ise bir tık daha güvenliği artıracağız
#Öncelikle basit bir csrf token sistemi yapalım
#Rastgele Uzantı Oluşturma ve Geçici URL Kullanma
#VE formu yollayalım
Bu sayede Csrf token ile gönderdiğimiz form işlemlerini random geçici url ile saldırılardan 1 tık daha korunuyoruz. Post işlemlerinde belirli bir url olmadığı için belirli bir sayfaya saldırı riskini azaltıyoruz
#Öncelikle basit bir csrf token sistemi yapalım
PHP:
<?php
//BİR ÖNCEKİ KONUMUZDA ANLATMIŞTIM
session_start();
function generateCsrfToken() {
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
}
function validateCsrfToken($token) {
return hash_equals($_SESSION['csrf_token'], $token);
}
function getCsrfToken() {
return $_SESSION['csrf_token'];
}
generateCsrfToken();
?>
#Rastgele Uzantı Oluşturma ve Geçici URL Kullanma
Kod:
<?php
session_start();
include 'csrf.php';
// Rastgele uzantı oluşturacağız arkadaşlar
function generateRandomString($length = 10) {
return substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/62))), 1, $length);
}
// ve saklıyoruz
$randomExtension = generateRandomString();
$_SESSION['randomExtension'] = $randomExtension;
?>//basit bir form
<!DOCTYPE html>
<html>
<head>
<title>Turkhacks.com</title>
</head>
<body>
<form action="process_<?php echo $_SESSION['randomExtension']; ?>.php" method="post">
<input type="text" name="data" placeholder="Veri girin">
<input type="hidden" name="csrf_token" value="<?php echo getCsrfToken(); ?>">
<button type="submit">Gönder</button>
</form>
</body>
</html>
#VE formu yollayalım
PHP:
<?php
session_start();
include 'csrf.php';
$randomExtension = $_SESSION['randomExtension'];
// Gelen uzantının doğru olup olmadığını kontrol edelim
if ($_SERVER['PHP_SELF'] !== "/process_$randomExtension.php") {
die("Geçersiz URL");
}
// CSRF token kontrolü ile veriyi artıralım
if (!validateCsrfToken($_POST['csrf_token'])) {
die("Geçersiz CSRF token");
}
// Veriyi dilediğimiz gibi işleyelim
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = htmlspecialchars($_POST['data']);
echo "Alınan veri: " . $data;
}
?>
Bu sayede Csrf token ile gönderdiğimiz form işlemlerini random geçici url ile saldırılardan 1 tık daha korunuyoruz. Post işlemlerinde belirli bir url olmadığı için belirli bir sayfaya saldırı riskini azaltıyoruz

