Imagine you’re at a restaurant. You order a pizza, but some prankster sneaks in and changes your order to pineapple pizza 🍍🍕(the horror!). Worse, they do it without you even noticing.

That, my friend, is how Cross-Site Request Forgery (CSRF) works on the web.


What is CSRF?

CSRF (pronounced "sea-surf") stands for Cross-Site Request Forgery. It’s a sneaky attack where a bad actor tricks your browser into making unwanted requests to another site where you’re already logged in.

Basically, CSRF exploits the fact that browsers automatically include cookies with requests.

💡 Example:

Let’s say you’re logged into your online banking (mybank.com).

  • A hacker sends you a phishing email with a link to an evil website.
  • That evil website secretly sends a request like this:
src="https://mybank.com/transfer?amount=1000&to=hacker" />
  • Your browser automatically includes your banking cookies, making the bank think you made the request.
  • Boom. You just lost $1000.

Why Does CSRF Work?

  • Browsers send cookies automatically – If you’re logged in, your cookies get sent with every request, no matter where it came from.
  • No user interaction needed – Just visiting a malicious page can trigger CSRF.
  • Servers trust authenticated users – The server thinks requests with valid cookies are legit.

How Do We Stop CSRF?

Now that we know how it works, let’s talk about fixes.

1. CSRF Tokens (The Secret Handshake)

A CSRF token is a random, secret value that your app generates and checks with every request.

Here’s how it works:

  • When you load a form/page, the server includes a hidden token in it.
  • When you submit the form, that token must be sent back.
  • The server checks if the token is valid—if not, the request is rejected.

Example:

action="/transfer" method="POST">  
   type="hidden" name="csrf_token" value="a1b2c3d4">  
   type="submit">Send Money

🚀 Why it works:

  • The attacker’s evil site can’t guess the CSRF token.
  • Even if they trick your browser into making a request, it will be missing the token.

2. SameSite Cookies (The Browser’s Defense)

The SameSite cookie attribute tells browsers not to send cookies with requests coming from other sites.

Set your cookies like this:

Set-Cookie: sessionid=xyz; Secure; HttpOnly; SameSite=Strict

🚀 Why it works:

  • If an attacker’s site tries to make a request, the browser won’t include your cookies, making the request useless.

3. Requiring Re-Authentication

Before doing sensitive actions, ask the user to re-enter their password or use 2FA.

🚀 Why it works:

  • Even if a CSRF attack tricks your browser, it can’t bypass authentication prompts.

The Takeaway 🎯

  • CSRF tricks your browser into making unwanted requests on your behalf.
  • The best defenses are CSRF tokens, SameSite cookies, and requiring re-authentication.
  • If you’re building a web app, always protect sensitive actions from CSRF.

CSRF is sneaky, but now you’re smarter than the hackers. Stay safe out there! 🔒🚀

Ever run into CSRF issues before? Drop your stories below! 👇🔥