CSRF (Cross-Site Request Forgery) ni attack ambapo attacker analazimisha browser ya user ku-submit request isiyotarajiwa kwenye website yako, ikiwa user tayari ame-authenticate.

Goal: Protect forms kwa kuhakikisha kwamba request inatoka kwenye user halali na si attacker.

Solution: Use CSRF tokens – unique secret values ambazo zinatumika validate form submissions.

⚙️ 2. Jinsi CSRF Tokens Zinavyofanya Kazi

Server inazalisha token ya kipekee na kuihifadhi kwenye session.

Token hii inaingizwa kwenye form kama hidden input.

Upon submission, server inalinganisha token iliyotumwa na token iliyohifadhiwa.

Ikiwa token haikubaliki, request inakataa.

🧩 3. PHP Example (Form with CSRF Token)
<?php
session_start();

// Generate CSRF token
if(empty($_SESSION['csrf_token'])){
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
$token = $_SESSION['csrf_token'];
?>

<h2>Secure Contact Form</h2>
<form action="process.php" method="POST">
<input type="hidden" name="csrf_token" value="<?php echo $token; ?>">
<input type="text" name="name" placeholder="Your Name" required><br><br>
<input type="email" name="email" placeholder="Your Email" required><br><br>
<textarea name="message" placeholder="Your Message" required></textarea><br><br>
<button type="submit" name="submit">Send</button>
</form>

🧩 4. PHP Form Processing with CSRF Validation (process.php)
<?php
session_start();

if(isset($_POST['submit'])){
// Check CSRF token
if(!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']){
die("❌ Invalid CSRF token. Request blocked.");
}

// Sanitize inputs
$name = htmlspecialchars(trim($_POST['name']));
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$message = htmlspecialchars(trim($_POST['message']));

echo "✅ Message from $name ($email) received safely!";

// Optionally regenerate token for next form
unset($_SESSION['csrf_token']);
}
?>


💡 Maelezo:

bin2hex(random_bytes(32)) inazalisha token yenye nguvu.

Token inalinganisha request na session value.

Ikiwa token haikubaliki, request inakataa.

🔑 5. Best Practices

Always include CSRF token on all POST forms.

Regenerate token after successful form submission.

Combine with input sanitization – defense in depth.

Use HTTPS – protect token during transmission.

Never trust user input – even with CSRF protection.

✅ 6. Hitimisho

CSRF tokens ni must-have security measure kwa forms za web applications.

Protects users na server kutoka unauthorized actions.

Best practice: combine CSRF tokens, input sanitization, validation, na HTTPS kwa maximum security.

🔗 Tembelea:

👉 https://www.faulink.com/

Kwa mafunzo zaidi ya PHP, form security, na CSRF protection.