Vấn đề bảo mật thông tin website nói theo một cách là rất quan trọng. CSRF là một kiểu tiến công diễn ra khá phổ thông hiện nay trên các website không bảo mật thông tin. Nếu như bạn là một lập trình viên thì nên nắm rõ kiểu tiến công này để đảm bảo tính bảo mật thông tin cho ứng dụng web của mình.
Vậy CSRF là gì?
CSRF hay còn gọi là kỹ thuật tiến công “Cross-site Request Forgery“, tức là kỹ thuật tiến công mạo chính chủ thể của nó. CSRF nói đến việc tiến công vào chứng thực request trên web thông qua việc sử dụng Cookies. Đây là nơi mà các hacker có khả năng sử dụng thủ thuật để tạo request mà bạn không hề biết. Vì vậy, một CSRF là hacker lạm dụng sự tin tưởng của một ứng dụng web trên trình duyệt của nạn nhân.
Phương pháp hoạt động
CSRF là một kiểu tiến công gây sự nhầm lẫn tăng tính xác thực và cấp quyền của nạn nhân khi gửi một request mạo đến sever. Vì thế một lỗ hổng CSRF tác động ảnh hưởng tới các quyền của người dùng ví dụ như quản trị viên, kết quả là chúng truy cập được đầy đủ quyền.
Khi gửi một request HTTP, trình duyệt của nạn nhân sẽ nhận về Cookie. Các cookie thường được dùng làm lưu trữ một session (Đọc thêm bài Session là gì? để hiểu thêm cách hoạt động của Session và cookies) để định danh người dùng không phải xác thực lại cho từng yêu cầu trình lên.
Nếu phiên thao tác làm việc đã xác thực của nạn nhân được lưu trữ trong một Cookie vẫn còn hiệu lực, và nếu ứng dụng không bảo mật thông tin dễ bị tiến công CSRF. Kẻ tiến công có thể thử dụng CSRF để chạy bất luận requets nào với ứng dụng web mà trong cả website không thể phân biệt được request nào là thực hay mạo.
Ví dụ để nắm vững hơn, khi ứng dụng web có một chức năng đơn giản đó là thay đổi mật khẩu người dùng. Việc trình lên server theo phương thức HTTP GET thông thường. Nội dung trình lên là password mới và confirm lại password vừa nhập:
- Người dùng đã đăng nhập trên web của bạn, cookie sẽ tiến hành tạo và lưu trữ dưới trình duyệt, khi chúng ta vào site lần sau bạn không nhất thiết phải đăng nhập lại. Giả sử bạn chưa đăng thoát, lúc này cookies của bạn vẫn còn hạn trong phiên thao tác làm việc.
- Lúc này nếu website của bạn mắc lỗi CSRF, người dùng vô tình vào trong 1 trang hacker mạo với mục tiêu lấy tài khoản từ ứng dụng web của bạn. Trong trang mạo hacker sẽ dùng script để chạy một url để cố ý reset mật khẩu người dùng trên trang của bạn: https://website-cua-ban .com/vulnerabilities/csrf/?password_new=hackedvàamp;password_conf=hackedvàamp;Change=Change#
Như vậy khi Victim (User) vô tình vào trang web-hacker-gia-mao .com đã reset password của chính bản thân mình tại trang website-cua-ban .com. tin tặc nếu biết thông tin username sẽ thử vào với password đã thiết lập:hacked và có thể vào trong 1 cách thường nhật.
Cách phòng chống tiến công CSRF
Dựa trên nguyên tắc của CSRF “lừa trình duyệt của người dùng (hoặc người dùng) gửi các câu lệnh HTTP”, thông thường để tránh tiến công ta sẽ chia làm hai đối tượng người tiêu dùng, một là cách một là phái client (người dùng cuối) và hai là phía server.
Có thể bạn quan tâm
Phía User
Để tránh trở thành nạn nhân của đa số cuộc tiến công CSRF nên thực hiện một số lưu ý sau:
- Nên đăng xuất khỏi các website quan trọng: Tài khoản nhà băng, tính sổ trực tuyến, các social, gmail… khi đã thực hiện xong thanh toán.
- Nên login vào trong 1 máy riêng và không cho tất cả những người thứ hai xúc tiếp với máy đó.
- Không nên click vào các đường dẫn mà bạn nhận được qua email, qua facebook … Khi chúng ta đưa chuột sang một đường dẫn, phía dưới bên trái của trình duyệt thường có địa chỉ website đích, bạn nên lưu ý để đến đúng trang mình muốn.
- Không lưu các thông tin về mật khẩu tại trình duyệt của mình. Không nên chọn các phương thức “đăng nhập lần sau”, “lưu mật khẩu” …
- Trong quá trình thực hiện thanh toán hay vào các website quan trọng không nên vào các website khác, có thể chứa các mã khai thác của kẻ tiến công.
Phía Server
Cho tới nay vẫn chưa xuất hiện giải pháp nào có thể phòng chống triệt để CSRF. Sau đây là một vài kĩ thuật sử dụng.
- Sử dụng captcha, các thông tin xác nhận: Captcha được sử dụng để nhận diện đối tượng người tiêu dùng đang thao tác với mạng lưới hệ thống là con người hay là không. Các thao tác quan trọng như “đăng nhập” hay là “chuyển tiền” ,”tính sổ” thường là hay sử dụng captcha. Những chức năng quan trọng như reset mật khẩu, xác nhận thay đổi info của trương mục cũng nên gửi url qua email đã đăng ký để người dùng có thể click vào xác nhận.
- Sử dụng csrf_token: token này sẽ thay đổi liên tục trong phiên thao tác làm việc, và khi thay đổi thông tin gửi kèm thông tin token này. Nếu token được sinh ra và token được trình lên ko trùng nhau thì loại bỏ request.
- Sử dụng cookie riêng biệt cho trang admin: Nên để trang quản trị ở một subdomain riêng để chúng không dùng chung cookies với front end của sản phẩm. Ví dụ nên được sắp xếp là admin.topdev.vn hay hơn là topdev.vn/admin.
- Kiểm tra IP: Một số mạng lưới hệ thống quan trọng chỉ cho truy cập từ những IP được thiết lập sẵn, hoặc chỉ cấp phép truy cập quản trị qua IP local hoặc VPN.
TopDev vừa giới thiệu xong các tri thức về CSRF là gì? Tìm hiểu kỹ thuật tiến công CSRF cũng như cách phòng chống tiến công mạo CSRF. Hy vọng những thông tin trong nội dung bài viết sẽ giúp ích cho những bạn đang tìm kiếm thông tin. Chúc các bạn vui vẻ!