Tại sao CSRF token bảo vệ được client

Nếu client bị mất cookie (sessionID), mất JWT token thì hacker có thể giả mạo client. Nhờ vào CSRF nên sessionID của ai thì người đó nấy dùng.

Nhưng em thắc mắc nếu hacker đã mò vào được cookie để lấy sesionID, vào được cả localStorage, sessionStorage để lấy JWT thì tạo sao lại không lấy được CSRF token?

Vậy cho em hỏi khi client fetch được csrf token thì client nên lưu trữ nó thế nào để sử dụng cho những lần sau?

Em cảm ơn

httpOnlySameSite=Strict.

Nhờ SameSite policy mà có một cách thiết lập thông dụng là server set CSRF cookie, client phải gửi lại nó cho các request quan trọng qua header ẩn.

1 Like

Cảm ơn anh đã phản hồi, nhưng em chưa hiểu lắm, phiền anh giải thích kỹ hơn tí được không ạ?

theo bạn thì hacker sẽ lấy kiểu gì?
nếu cái gì cũng lấy được thì còn gì để nói nữa

1 Like

dạ là Man-in-the-middle

Vậy là bạn chưa hiểu CSRF ngăn chặn cái gì rồi.

Mỗi request của client đều có cookie ứng với server, nên có cookie không có nghĩa là do chính chủ kích hoạt, mà có thể là mã độc ở trang khác gửi request. Vì vậy cần phải có thêm 1 header nữa.

3 Likes

Tương tự như CORS, CSRF được định ra để bảo vệ người dùng trên các trình duyệt tránh việc gửi các request thực thi từ các trang chứa mã độc bên thứ ba. Các attack trên các client không phải là trình duyệt thì CSRF là vô dụng. Do đó để hiểu về tác dụng của CSRF thì cần phải hiểu cơ chế kiểm soát CORS của trình duyệt và attack surface mà CSRF nhắm tới bảo vệ

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?