Understanding CSRF Attacks and Prevention
Introduction
In this blog, we will explore CSRF (Cross-Site Request Forgery) attacks, their implications, and how to prevent them using cookies' properties.
What is CSRF? 🔫
CSRF, or Cross-Site Request Forgery, is a type of malicious exploit of a website where unauthorized commands are transmitted from a user that the web application trusts.
Example Scenario 🤔
Consider an example where we have a domain at "example.com" which has set a cookie upon authentication from the front-end of the site at "app.example.com" and the server at "api.example.com". Now, consider a malicious site at "app.example2.com", where when a user visits, a request is made to the server at "api.example.com" and user data is manipulated without the acknowledgment of the user.
Once the "api.example.com" has set cookies in the browser, it's the default property of the cookies to be sent with each request. Hence, the auth token will be sent to the server, and the user's data can be manipulated very easily. This is a common web attack known as cross-site request forgery, which is very clear by the name itself—it refers to requests that are forged (made) from cross (other) site origins.
A Deep Dive into Authentication Methods in NextJS ApplicationsHow to Evade CSRF Attacks
Using the options that cookies provide:
Define Domain: While setting the cookies, define the domain to ensure only requests from this domain are accepted.
Set "SameSite" Options: Set the "SameSite" options to "Lax" or "Strict" to restrict cookies to be sent only from top-level navigation and the defined domains.
For more on cookies options, check this out:
Conclusion
Understanding and preventing CSRF attacks is crucial for web security. By leveraging cookies' properties, we can significantly reduce the risk of such attacks and ensure a more secure web application environment.
Subscribe to my newsletter
Read articles from Manish Kumar Gupta directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Manish Kumar Gupta
Manish Kumar Gupta
{ "about" : "Just an engineer ⚙️", "stack" : "T3 Stack || MERN || AWS || Docker" }