CSRF hoặc Cross-Site Request Forgery là một lỗ hổng trang web mà kẻ tấn công có thể gây ra một hành động xảy ra trong phiên của nạn nhân trên một trang web khác. Một trong những điều khiến CSRF có nhiều rủi ro là nó thậm chí không yêu cầu sự tương tác của người dùng, tất cả những gì cần thiết là nạn nhân có thể xem một trang web có khai thác trong đó.
Mẹo: CSRF thường được phát âm từng chữ cái hoặc là “lướt sóng trên biển”.
Một cuộc tấn công CSRF hoạt động như thế nào?
Cuộc tấn công liên quan đến việc kẻ tấn công tạo ra một trang web có phương pháp thực hiện yêu cầu trên một trang web khác. Điều này có thể yêu cầu sự tương tác của người dùng, chẳng hạn như yêu cầu họ nhấn một nút, nhưng nó cũng có thể không tương tác. Trong JavaScript, có nhiều cách để khiến một hành động xảy ra tự động. Ví dụ: hình ảnh pixel 0 x 0 sẽ không hiển thị với người dùng nhưng có thể được định cấu hình để “src” của nó đưa ra yêu cầu đến một trang web khác.
JavaScript là ngôn ngữ phía máy khách, điều này có nghĩa là mã JavaScript được chạy trong trình duyệt chứ không phải trên máy chủ web. Nhờ thực tế này, máy tính thực hiện yêu cầu CSRF thực sự là của nạn nhân. Thật không may, điều này có nghĩa là yêu cầu được thực hiện với tất cả các quyền mà người dùng có. Khi trang web tấn công đã lừa nạn nhân thực hiện yêu cầu CSRF, yêu cầu về cơ bản không thể phân biệt được với người dùng thực hiện yêu cầu bình thường.
CSRF là một ví dụ về “cuộc tấn công nhầm lẫn” chống lại trình duyệt web khi trình duyệt bị kẻ tấn công lừa sử dụng các quyền của nó mà không có các đặc quyền đó. Các quyền này là phiên của bạn và mã thông báo xác thực đối với trang web mục tiêu. Trình duyệt của bạn tự động bao gồm các chi tiết này trong bất kỳ yêu cầu nào mà trình duyệt đưa ra.
Các cuộc tấn công CSRF hơi phức tạp để sắp xếp. Trước hết, trang web mục tiêu cần có một biểu mẫu hoặc URL có tác dụng phụ như xóa tài khoản của bạn. Sau đó, kẻ tấn công cần tạo ra một yêu cầu để thực hiện hành động mong muốn. Cuối cùng, kẻ tấn công cần phải khiến nạn nhân tải một trang web có khai thác trong đó khi họ đăng nhập vào trang web mục tiêu.
Để ngăn chặn các vấn đề CSRF, điều tốt nhất bạn có thể làm là bao gồm mã thông báo CSRF. Mã thông báo CSRF là một chuỗi được tạo ngẫu nhiên được đặt làm cookie, giá trị cần được bao gồm với mọi phản hồi cùng với tiêu đề yêu cầu bao gồm giá trị. Mặc dù một cuộc tấn công CSRF có thể bao gồm cookie, nhưng không có cách nào để có thể xác định giá trị của mã thông báo CSRF để đặt tiêu đề và do đó, cuộc tấn công sẽ bị từ chối.