CSRF (cross site request forgery) là gì? Làm thế nào để ngăn chặn tấn công CSRF?
Cross Site Request Forgery viết tắt là CSRF.
CSRF là một trong những hình thức tấn công phổ biến nhất của những kẻ gửi thư rác và những kẻ lừa đảo trực tuyến. Cách khai thác tấn công CSRF khá là phức tạp nhưng nó lại rất phổ biến.
Nhưng các cuộc tấn công CSRF có thể rất dễ dự đoán và vì vậy mức ảnh hưởng của nó ở mức vừa phải.
Kịch bản tấn công CSRF
Trong kich bản này, tôi có:
- Một Attacker (kẻ tấn công)
- Máy chủ của Attacker
- User (người dùng)
- Server mục tiêu (target server)
Và bây giờ, tất cả mọi request đến từ máy chủ của kẻ tấn công ( attackers server) đều được nhúng những thứ độc hại từ vào request đó, khiến cho trình duyệt người dùng điều hướng đến trang web cần tấn công.
Toàn bộ quá trình CSRF nhằm mục đích có được xác thực hợp lệ từ người dùng trên trang web mục tiêu
.
Cross Site Request Forgery
Trong kich bản trên, chúng ta có một người dùng chuyển tiền trên một trang web ngân hàng, bây giờ người dùng đăng nhập vào ngân hàng và thực hiện yêu cầu chuyển tiền.
Yêu cầu chuyển tiền sẽ là HTTP POST đến trang: http://bank.com/transfer
, sau khi yêu cầu được xử lý thì để suy trì trạng thái thì máy chủ sẽ gửi Authcookie: 86GHTR
cho người dùng.
Yêu cầu POST request trên sẽ thực hiện chức năng chuyển khoản:
- Tài số tài khoản: 7895457898054
- Số tiền: 100000
Kẻ tấn công đã biết về đường dẫn HTTP POST http://bank.com/transfer
, và cách thức để chuyển tiền của trang web mục tiêu đó ( gồm các trường, các param cần thiết để chuyển được tiền ). Kẻ tấn công có thể giả mạo request này và anh ta thực hiện tấn công CSRF, nếu kẻ tấn công có thể lừa trình duyệt người dùng thực hiện request này thì người dùng sẽ chuyển khoản cho anh ta.
Cách phòng tránh Cross Site Request Forgery
- CRSF sẽ dễ bị khai thác nếu chúng ta sử dụng các mẫu (patterns) dễ dự đoán. Ví dụ: các trường (fields) của thông tin chuyển tiền, …
- Sử dụng
Anti-forgery tokens
, token ngẫu nhiên cho mỗi request. - Những yêu cầu bắt nguồn từ bên ngoài (khác domain) đều không hợp lệ.
- Sử dụng mô hình phát hiện gian lận.
Nguồn tham khảo: https://gbhackers.com/a8-cross-site-request-forgery-csrf/