Show Chào các bạn, mình quay trở lại rồi đây. Hôm nay mình xin được viết về một chủ đề mà mình nghĩ mọi Web Developer nên phải biết. Đó là CSRF.
Giải thích kịch bản tấn côngThật ra có rất nhiều các hình thức tấn công nhưng mình chỉ giải thích một loại cơ bản nhất để các bạn có thể hiểu rõ về nó. LƯU Ý: kịch bản chỉ mang tính chất minh họa, không phải là thuốc, không có tác dụng thay thế thuốc chữa bệnh. Một thanh niên tên là A có tài khoản ngân hàng B và sử dụng dịch vụ internet banking của ngân hàng này. Một ngày đẹp trời, thanh niên A đăng nhập vào web internet banking của ngân hàng B để gửi tiền về cho bố mẹ. Ngay sau khi chuyển tiền xong thanh niên A vào trang web để đọc tin tức linh tinh. Danh sách tin tức sẽ như sau. Thanh niên A chợt nhìn thấy mình được nhận xe SH nên ham hố bấm vào mà không suy nghĩ gì cả. BÙM: tự nhiên SMS báo về tài khoản của bạn đã bị trừ 50 củ. Thanh niên A hốt hoảng không biết điều gì xảy ra… Lúc này, chuyên viên điều tra tên là Tiến vào cuộc. Cuối cùng, chuyên viên đã tìm ra nguyên nhân về việc mất tiền này. Tiến xem source code của trang tin tức kia và: Hóa ra link nhận xe SH kia không phải là link bình thường. Nó chính là cả 1 cái form chuyển tiền vào số tài khoản của hacker được ngụy trang dưới vỏ bọc của 1 link bình thường. Những hình thức khácVề cơ bản, hình thức này lợi dụng chính request của người dùng nên hacker có thể lợi dụng những thẻ mà khi người dùng load trang, resource được load theo. Ví dụ như:
<link rel="stylesheet" type="text/css" href="http://hihi.com/delete/all_post">
<script type="text/javascript" src="http://hihi.com/delete/all_post" charset="utf-8" async defer></script>
<p style="background-image: url(https://hihi.com/delete/all_post)"></p> Cách thức phòng tránh tấn công CSRFPhía người dùng
Phía application, server
Demo sử dụng trong bài viết<!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <ul> <li><a href="/">Coffee</a></li> <li><a href="/">Tea</a></li> <li><a href="/">Milk</a></li> </ul> <form method="POST" action="http://B/banking/send-money"> <input type="hidden" name="total_money" value="50000000" /> <input type="hidden" name="account_number"" value="12345678910" /> <button>Bấm vào đây để nhận xe SH miễn phí bạn ơi</button> </form> <style> ul { list-style-type: none; margin: 0; } form { padding-inline-start: 40px; } form button { display: list-item; text-align: -webkit-match-parent; border: none; background: none; padding: 0; cursor: pointer; color: blue; text-decoration: underline; } </style> </body> </html> Tham khảo:
Điều hướng bài viết Chào anh em!!! Ở bài viết trước Transaction trong MySQL: Tổng quan, khái niệm, cơ chế chúng ta đã dạo…
Hút thuốc nhiều thì hay ho mà PHP 8 cũng có nhiều thứ hay ho. =)) PHP 8 sẽ được… |