Series bảo mật trong ASP.NET MVC - 2: Cross-Site Request Forgery (CSRF)
Cách tấn công CSRF này gọi là giả mạo request khi chúng giả mạo một request không phải từ chính website mà hacker sẽ giả lập request để gửi các thông tin lên server mà không qua hệ thống website. Cho phép kẻ tấn công giả mạo thông tin user để thực hiện các hành vi ngoài mong muốn.
Hãy xem ví dụ sau.
- Người dùng đăng nhập vào tài khoản ngân hàng
- Ngân hàng cấp quyền và một session bảo mật được khởi tạo giữa user và hệ thống ngân hàng.
- Hacker gửi một email với link nói rằng bạn có thể kiếm 1.000.000 USD ngay bây giờ.
- Người dùng click vào link nguy hiểm trên, site sẽ chuyển tiền từ account của bạn về tài khoản của hacker. Bởi vì sesion đó được khởi tạo và các đoạn mã đọc sẽ thực thi thành công.

Microsoft đã biết vấn đề này và để ngăn chặn nó bạn chỉ cần gọi AntiForgeryToken.
Giải pháp:-
Chúng ta cần thêm @Html.AntiForgeryToken() vào trong thẻ form. Và các Action Method nhân jcacs request Post này cần phải đặt attribute [ValidateAntiForgeryToken] để kiểm tra nếu token là hợp lệ.
Thêm [AntiForgeryToken] vào View

Hình 2. Adding AntiForgeryToken on View.
Adding [ValidateAntiForgeryToken] Attribute to HttpPost[HttpPost] Method.

Hình 3. Thêm ValidateAntiForgeryToken vào phương thức [HttpPost]
Cơ chế của AntiForgeryToken
Khi chúng ta thêm AntiForgeryToken vào View sẽ tạo ra một hidden field và gán một token duy nhất vào trong khi một session cookie được gửi về trình duyệt.
Khi chúng ta gửi request POST lên nó sẽ kiểm tra token hidden field có tên __RequestVerificationToken có tồn tại hay không. Nếu cookie hoặc hidden field __RequestVerificationToken bị thiếu, hoặc giá trị khống đúng. ASP.NET MVC sẽ không xử lý requesst này. Việc này ngăn chặn việc tấn công giả mạo.
RequestVerificationTokenon View.

Hình 4. RequestVerificationToken sẽ được tạo ra trong form.
RequestVerificationToken Cookie.

Hình 5. RequestVerificationToken được tạo ra trong cookie.
Trích nguồn từ: codeproject.com
Bài viết liên quan
Làm việc với User Secrets trong ứng dụng ASP.NET Core
Chúng ta tìm hiểu cách làm việc với UserSecrets để quản lý các thông tin cấu hình nhạy cảm và bí mật của ứng dụng.
Đọc thêm
Tổng quan các loại thuật toán mã hoá dữ liệu
Bài viết rất hay giới thiệu về tổng quan các loại thuật toán mã hoá dữ liệu dành cho những bạn nào muốn tìm hiểu về thuật toán mã hoá.
Đọc thêm
Series bảo mật trong ASP.NET MVC - 5: Rỏ rỉ thông tin máy chủ
Các thông tin về phiên bản được sử dụng bởi một kẻ tấn công sẽ khai thác để tấn công vào hệ thống.
Đọc thêm
Series bảo mật trong ASP.NET MVC - 4: Upload các tệp tin có hại
Qua 3 bài trước chúng ta đã từng tìm hiểu về cách bảo vệ tất cả các trường nhập liệu. Nhưng chúng ta đã bỏ qua một trường chính là trường File Upload
Đọc thêm
Series bảo mật trong ASP.NET MVC - 3: Tấn công Cross-Site Scripting (XSS)
Tấn công Cross-site Scripting (XSS) là cách tấn công bằng việc đẩy các đoạn mã javascript vào hệ thống thông qua các trường nhập liệu
Đọc thêm
Series bảo mật trong ASP.NET MVC - 1: Cấu hình Custom Error Page
Trong loại tấn công này, tin tặc sẽ lấy dữ liệu từ form được gửi lên từ người dùng và thay đổi giá trị sau đó gửi dữ liệu đã được sửa lên server
Đọc thêm
7 thủ thuật giúp bảo mật ứng dụng ASP.NET developer cần biết
Là một nhà phát triển web chuyên nghiệp, bạn phải biết được các chiêu thức để giúp ứng dụng bảo mật hơn. Trong bài viết này mình sẽ liệt kê và giải thích 7 thủ thuật bảo mật ứng dụng web.
Đọc thêm