- vừa được xem lúc

Blog#185: Preventing Cross-Site Request Forgery (CSRF) Attacks in Express🔐

0 0 31

Người đăng: NGUYỄN ANH TUẤN

Theo Viblo Asia

185

Hi, I'm Tuan, a Full-stack Web Developer from Tokyo 😊. Follow my blog to not miss out on useful and interesting articles in the future.

Introduction to Cross-Site Request Forgery (CSRF) Attacks

Cross-Site Request Forgery (CSRF) is a security vulnerability that allows an attacker to trick a user into performing unwanted actions on a web application, without their consent. In a CSRF attack, the user's browser is used as a conduit for unauthorized requests to a vulnerable application, effectively exploiting the user's authenticated session.

The Importance of Protecting Against CSRF Attacks

If a web application is not protected against CSRF attacks, it can lead to serious consequences, including:

  • Unauthorized data modification or deletion
  • Unauthorized account access or password changes
  • Unauthorized financial transactions

To keep your Node Express applications secure, it's essential to implement proper CSRF protection measures.

Implementing CSRF Protection in Express

In this article, we'll walk through the process of implementing CSRF protection for a Node Express web application, using the following steps:

  1. Installing necessary packages
  2. Setting up middleware
  3. Generating CSRF tokens
  4. Validating CSRF tokens
  5. Handling token errors

Step 1: Installing Necessary Packages

First, you'll need to install two packages to help implement CSRF protection: csurf and cookie-parser. To do this, run the following command in your terminal:

npm install csurf cookie-parser

Step 2: Setting Up Middleware

After installing the packages, you'll need to set up the middleware in your Express.js application. Import the csurf and cookie-parser packages and add them to your middleware stack:

const express = require('express');
const cookieParser = require('cookie-parser');
const csrf = require('csurf'); const app = express(); app.use(cookieParser());
app.use(csrf({ cookie: true }));

Step 3: Generating CSRF Tokens

Next, you need to generate CSRF tokens for each user session. To do this, include the csrfToken function in your route handlers:

app.get('/form', (req, res) => { const csrfToken = req.csrfToken(); res.render('form', { csrfToken });
});

Include the generated CSRF token as a hidden field in your HTML forms:

<form action="/submit" method="POST"> <input type="hidden" name="_csrf" value="{{csrfToken}}"> <!-- other form fields go here --> <button type="submit">Submit</button>
</form>

Step 4: Validating CSRF Tokens

The csurf middleware automatically validates the CSRF tokens in incoming POST requests. If the token is valid, the request will proceed as normal. If the token is missing or incorrect, an error will be thrown.

Step 5: Handling Token Errors

To handle CSRF token errors gracefully, you can add a custom error handler to your Express.js application:

app.use((err, req, res, next) => { if (err.code === 'EBADCSRFTOKEN') { // CSRF token validation failed res.status(403).send('Invalid CSRF token.'); } else { // Pass the error to the next middleware next(err); }
});

This will catch CSRF token errors and return a 403 Forbidden response with a helpful message.

Conclusion

By following these steps, you can effectively protect your Nodejs Express web applications from Cross-Site Request Forgery attacks. Remember to keep your packages up-to-date and monitor your application's security regularly to ensure that it remains safe from vulnerabilities.

And Finally

As always, I hope you enjoyed this article and got something new. Thank you and see you in the next articles!

If you liked this article, please give me a like and subscribe to support me. Thank you. 😊

Ref

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 396

- vừa được xem lúc

Hướng dẫn làm bot Facebook messenger cho tài khoản cá nhân

Giới thiệu. Trong bài viết trước thì mình có hướng dẫn các bạn làm chatbot facebook messenger cho fanpage. Hôm nay mình sẽ hướng dẫn các bạn tạo chatbot cho một tài khoản facebook cá nhân. Chuẩn bị.

0 0 195

- vừa được xem lúc

Crawl website sử dụng Node.js và Puppeteer - phần 2

trong phần 1 mình đã giới thiệu về puppeteer và tạo được 1 project cùng một số file đầu tiên để các bạn có thể crawl dữ liệu từ một trang web bất kỳ. Bài này mình sẽ tiếp nối bài viết trước để hoàn thiện seri này.

0 0 73

- vừa được xem lúc

Điều React luôn giữ kín trong tim

■ Mở đầu. Ngồi viết bài khi đang nghĩ vu vơ chuyện con gà hay quả trứng có trước, mình phân vân chưa biết sẽ chọn chủ đề gì để chúng ta có thể cùng nhau bàn luận.

0 0 59

- vừa được xem lúc

Gửi Mail với Nodejs và AWS SES

AWS SES. AWS SES là gì.

0 0 83

- vừa được xem lúc

Crawl website sử dụng Node.js và Puppeteer - phần 1

Bài viết này mình sẽ giới thiệu cho các bạn craw dữ liệu của web site sử dụng nodejs và Puppeteer. .

0 0 164