Hãy tưởng tượng một ứng dụng web ngân hàng điện tử tại banking.example.com
với các hình thức sau đây để nộp giao dịch:
<form action="/transaction" method="post">
<input type="text" name="beneficiary"/>
<input type="text" name="amount"/>
<input type="submit" value="Pay"/>
</form>
Kẻ tấn công bây giờ có thể thiết lập một trang web tại hacker.net
như sau:
<form action="https://banking.example.com/transaction" method="post" style="visibility:hidden">
<input type="text" name="beneficiary" value="John Doe, Account No. 34-236326-1"/>
<input type="text" name="amount" value="1000000"/>
<input type="submit" value="Pay"/>
</form>
<script>
document.forms[0].submit();
</script>
Kẻ tấn công sau đó sẽ lừa nạn nhân truy cập hacker.net
, điều này sẽ khiến cho các trình duyệt của nạn nhân gửi yêu cầu POST tới ứng dụng ngân hàng điện tử, tạo ra một giao dịch lớn cho hacker. Điều này làm việc vì trình duyệt của nạn nhân vui vẻ gửi cookie phiên cùng với yêu cầu POST giả mạo cho ứng dụng ngân hàng điện tử. Nếu biểu mẫu đã được bảo vệ bởi một mã thông báo CSRF, thì kẻ tấn công không thể khiến trình duyệt của nạn nhân gửi yêu cầu POST hợp lệ và do đó cuộc tấn công sẽ không thể thực hiện được.
Loại tấn công này được gọi là tấn công yêu cầu qua trang web chéo (CSRF).
Chắc chắn, các cuộc tấn công CSRF cũng là lý do khiến mọi người đưa ra lời khuyên về việc không bao giờ truy cập các trang web khác trong khi đăng nhập vào một ngân hàng điện tử hoặc ứng dụng web quan trọng khác.
Mã thông báo CSRF không bảo vệ biểu mẫu web được tự động gửi bởi người dùng được ủy quyền thông thường. Để bảo vệ điều đó, bạn sẽ sử dụng một số CAPTCHA.
Nguồn
2012-04-20 11:15:17
@agf Tôi chỉ đọc câu hỏi đó và tôi không thấy bản sao ': (' –
Chắc chắn. Tôi đang đọc câu trả lời ngay bây giờ ...;) –
Bạn mô tả bài đăng" ẩn danh ". Đó là tất cả về bảo vệ bài đăng đó xảy ra với thông tin xác thực của người dùng đã đăng nhập thực sự. – Cheekysoft