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
eMudhra và lỗ hổng khóa yếu: dấu vết khai thác và tiến độ vá lỗi
Cloudflare ghi nhận khoảng 22.000 lần bắt tay TLS dùng khóa yếu của eMudhra, phần lớn bị chặn nhờ vá lỗi kịp thời; eMudhra tuyên bố rời thị trường CA công cộng.
Đọc thêm
Lỗ hổng CVSS 10.0 trong LXD và MicroCloud cho phép giả mạo client tin cậy mà không cần khóa riêng
Lỗ hổng nghiêm trọng CVE-2026-112816 trong LXD và MicroCloud của Canonical cho phép kẻ tấn công đăng nhập với tư cách client tin cậy chỉ với chứng chỉ công khai, đạt điểm CVSS tối đa 10.0. Canonical đã phát hành bản vá.
Đọc thêm
NetamLoader tấn công hệ thống Windows 10 của chính phủ châu Á qua .NET injection
Kaspersky phát hiện chuỗi lây nhiễm tinh vi nhắm vào bản Windows 10 tùy chỉnh dành riêng cho cơ quan chính phủ ở châu Á, sử dụng framework .NET có tên NetamLoader.
Đọc thêm
Cloudflare ghi nhận 18,2 triệu cuộc tấn công DDoS lớp mạng trong quý 3, tăng 38%
Cloudflare cho biết đã tự động chặn 18,2 triệu cuộc tấn công DDoS lớp mạng và 14,4 nghìn tỷ yêu cầu HTTP DDoS trong quý 3/2026, tương đương khoảng 8.226 cuộc tấn công mỗi giờ.
Đọc thêm
Lỗ hổng link chia sẻ ChatGPT có thể chạy mã độc trong phiên đăng nhập và đọc hội thoại riêng tư
Các nhà nghiên cứu tại Parameter phát hiện một link chia sẻ ChatGPT độc hại có thể chạy mã của kẻ tấn công trong phiên đăng nhập của nạn nhân, đọc hội thoại riêng tư. OpenAI đã vá lỗi và trả 5.000 USD tiền thưởng.
Đọc thêm
Tin tặc kết hợp ba lỗ hổng Ivanti Connect Secure để chiếm quyền root không cần xác thực
CISA đưa hai lỗ hổng Ivanti Connect Secure vào danh mục KEV sau khi bị khai thác thực tế, trong chuỗi khai thác ba lỗ hổng cho phép chiếm quyền root mà không cần xác thực.
Đọc thêm
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