CSRF là gì? Tìm hiểu về CSRF và cách phòng chống tấn công hiệu quả

0
221
CSRF là gì? Tìm hiểu về CSRF và cách phòng chống tấn công hiệu quả

Bảo mật website là vô cùng quan trọng đúng không? CSRF (Cross-Site Request Forgery) là kiểu tấn công phổ biến đối với các trang web không an toàn. Nếu bạn là lập trình viên, thì bạn cần hiểu về loại tấn công này để đảm bảo an toàn cho ứng dụng web mà bạn đang phát triển.

CSRF là gì?

CSRF (Cross-Site Request Forgery) hay còn được gọi là “giả mạo yêu cầu trên nhiều trang web” là một loại tấn công giả mạo chính xác đối tượng đó. CSRF liên quan đến việc tấn công vào việc xác thực các yêu cầu web thông qua việc sử dụng cookie. Đây là nơi mà tin tặc có thể lợi dụng để thực hiện các yêu cầu mà người dùng không hề hay biết. Đó là cách mà CSRF tận dụng lòng tin của một ứng dụng web trong trình duyệt của nạn nhân.

Cách thức hoạt động

CSRF là một loại tấn công mà gây hiệu ứng nhầm lẫn trong việc xác thực và ủy quyền của nạn nhân bằng cách gửi yêu cầu giả mạo đến máy chủ. Do đó, lỗ hổng CSRF ảnh hưởng đến quyền của người dùng, ví dụ như quản trị viên, khiến họ có quyền truy cập đầy đủ.

Bằng cách gửi yêu cầu HTTP, trình duyệt của nạn nhân sẽ nhận được cookie. Cookie thường được sử dụng để lưu trữ phiên (hãy đọc thêm về phiên để hiểu thêm về cách hoạt động của cookie) để nhận dạng người dùng mà không cần xác thực lại cho mỗi yêu cầu được gửi.

Nếu phiên xác thực của nạn nhân được lưu trữ trong cookie hợp lệ và ứng dụng không an toàn, thì nó dễ bị tấn công CSRF. Kẻ tấn công có thể thử sử dụng CSRF để thực hiện bất kỳ yêu cầu nào đối với ứng dụng web mà ngay cả trang web cũng không thể nhận biết yêu cầu nào là thật hay giả.

Ví dụ để hiểu rõ hơn, giả sử ứng dụng web của bạn có một chức năng đơn giản là cho phép người dùng thay đổi mật khẩu. Khi người dùng gửi yêu cầu thông qua phương thức HTTP thông thường, nội dung yêu cầu bao gồm mật khẩu mới và xác nhận lại mật khẩu đã được nhập.

Người dùng đã đăng nhập vào trang web của bạn, cookie sẽ được tạo và lưu trữ trong trình duyệt. Lần sau khi họ truy cập trang web, họ sẽ không cần phải đăng nhập lại trừ khi họ đăng xuất. Giả sử trong phiên này, cookie của bạn vẫn còn hiệu lực.

Bây giờ, nếu trang web của bạn mắc lỗi CSRF, người dùng sẽ vô tình truy cập vào một trang web giả mạo với mục tiêu lấy thông tin tài khoản của người dùng trên trang web của bạn. Trên trang web giả mạo này, tin tặc sẽ sử dụng mã lệnh để chạy URL nhằm reset mật khẩu của người dùng trên trang web của bạn: https://website-hack-gia-mao.com/vulnerabilities/csrf/?password_new=hacked&password_conf=hacked&thay_doi=thay_doi

Do đó, khi nạn nhân (người dùng) vô tình truy cập vào website-hack-gia-mao.com, anh ta đã reset mật khẩu của mình trên website-cua-ban.com. Nếu tin tặc biết thông tin tên đăng nhập, tin tặc có thể thử đăng nhập bằng mật khẩu đã được cấu hình: hacked và bạn có thể đăng nhập bình thường.

Cách ngăn chặn cuộc tấn công CSRF

Dựa trên nguyên tắc “lừa trình duyệt của người dùng gửi lệnh HTTP”, thông thường, để tránh bị tấn công CSRF, chúng ta sẽ chia thành hai đối tượng: phía người dùng và phía máy chủ.

Phía người dùng

Để tránh trở thành nạn nhân của tấn công CSRF, bạn nên làm như sau:

  • Đăng xuất khỏi các trang web quan trọng như tài khoản ngân hàng, thanh toán trực tuyến, mạng xã hội, Gmail… khi thực hiện các giao dịch.
  • Đăng nhập vào một máy tính riêng và không cho phép người khác truy cập vào máy tính đó.
  • Không click vào các liên kết nhận được qua email, trên Facebook… Khi rê chuột vào một liên kết nào đó, hãy chú ý đến địa chỉ của trang web đích phía dưới bên trái của trình duyệt để đảm bảo đúng vị trí và trang web bạn muốn truy cập.
  • Không lưu trữ thông tin mật khẩu trong trình duyệt của bạn, hạn chế việc chọn các chức năng “đăng nhập lần sau”, “lưu mật khẩu”…
  • Trong quá trình thực hiện giao dịch hoặc truy cập các trang web quan trọng, không truy cập vào các trang web khác có thể chứa mã khai thác của kẻ tấn công.

Phía máy chủ

Cho đến nay, chưa có biện pháp nào có thể ngăn chặn hoàn toàn tấn công CSRF. Dưới đây là một số kỹ thuật để sử dụng:

  • Sử dụng captcha và xác nhận: Captcha được sử dụng để xác định xem đối tượng đang thao tác trên hệ thống có phải là con người hay không. Các thao tác quan trọng như “đăng nhập”, “chuyển khoản” và “thanh toán” thường được yêu cầu xác thực bằng hình ảnh. Một số chức năng quan trọng như việc đặt lại mật khẩu hoặc xác nhận thay đổi thông tin tài khoản cũng nên gửi URL qua email đã đăng ký để người dùng có thể nhấp vào để xác nhận.
  • Sử dụng CSRF token: Mã thông báo này sẽ thay đổi liên tục trong phiên và khi thông tin được đính kèm với mã thông báo này thay đổi. Nếu mã thông báo được tạo và mã thông báo được gửi không khớp, yêu cầu sẽ bị hủy bỏ.
  • Sử dụng cookie riêng cho trang quản trị: Bạn nên đặt trang quản trị trên một tên miền phụ riêng biệt để không chia sẻ cookie với giao diện người dùng. Ví dụ: admin.topdev.vn hoặc topdev.vn/admin.
  • Kiểm tra IP: Một số hệ thống chỉ cho phép truy cập từ IP đã đăng ký trước hoặc chỉ cho phép truy cập vào trang quản trị qua IP cục bộ hoặc VPN.

TopDev vừa chia sẻ kiến thức về CSRF là gì và cách ngăn chặn tấn công giả mạo CSRF. Hy vọng những thông tin trong bài viết này sẽ hữu ích cho bạn. Chúc bạn vui vẻ!