Kỹ thuật tấn công CSRF và cách chống CSRF
Vấn đề bảo mật website với dân coder có thể nói là rất quan trọng. Với những lập trình viên dày dặn kinh nghiệm thì họ sẽ có những cách xử lý khôn khéo để có thể bảo mật được dự án của mình, còn những bạn mới học nghề thì đây lại là vấn đề rất khó khăn. Về chủ đề bảo mật website thì rất nhiều thứ cần phải nói đến, và đương nhiên trong một bài tôi không thể nào trình bày hết được. Vì thế tôi sẽ tạo một serie với tên là “Bảo Mật Website Cho Coder”, trong chủ đề này tôi sẽ trình bày những vấn đề bảo mật liên quan đến dân code nhé.
Và bài đầu tiên cũng là bài mở hàng tôi sẽ nói về kỹ thuật tấn công CSRF (Cross-site Request Forgery), trước tiên ta tìm hiểu khái niệm về kỹ thuật tấn công này đã nhé.
1. Kỹ thuật tấn công CSRF là gì?
Để trả lời câu hỏi này tôi sẽ trình bày dưới dạng đọc hiểu, tức là tôi hiểu như thế nào thì tôi sẽ trình bày lại như vậy cho các bạn, nên sẽ có những sai sót và rất mong các bạn bỏ qua, ủng hộ góp ý kiến để tôi có thể hoàn thành serie này tốt đẹp hơn.
Kỹ thuật tấn công CSRF hay còn gọi là kỹ thuật tấn công “Cross-site Request Forgery“, nghĩa là kỹ thuật tấn công giả mạo chính chủ thể của nó. Tôi sẽ lấy một ví dụ thế này cho các bạn dễ hình dung.
Giả sử trong hệ thống các bạn có một action xử lý xóa người dùng với url như sau: domain.com/delete.php?id=12
(Xóa user có id = 12). Như vậy giả sử một người nào đó biết được URL này thì họ sẽ hack được, và họ sẽ lợi dụng chính admin của hệ thống. Họ sẽ gửi một email với nội dung là một hoặc nhiều thẻ hình ảnh (IMG) với SRC là url đó và mỗi hình có 1 id khác nhau, như vậy nếu admin đọc cái email đó thì trường hợp admin đang login vào hệ thống thì admin đã vô tình xóa đi những user như trong SRC của các hình trên. Đây là một ví dụ nho nhỏ điển hình thôi chứ trong thực tế ai lại đi làm chương trình xóa người dùng mà lại để cái ID to đùng trên kia :D, ấy mà đôi khi những bạn non tay nghề lại mắc phải đấy.
Còn nhiều trường hợp khác nữa mà tôi nghĩ tới đây bạn đã hiểu được nó là gì rồi, nên ta đi thẳng vào vấn đề cách phòng chống nhé.
2. Cách phòng chống tấn công CSRF
Thông thường để tránh tấn công ta sẽ chia làm hai đối tượng, một là đối tượng coder và hai là đối tượng người dùng cuối (user).
Với đối tượng người dùng cuối thì:
- Hạn chế sử dụng login vào hệ thống khi nói chuyện tiếp xúc với những người lạ qua các kênh khác nhau, những email không rõ nguồn gốc. Khi không dùng hệ thống thì lập tức logout
- Nên login vào một máy riêng và không cho người thứ 2 tiếp xúc với máy đó.
- Thay đổi mật khẩu liên tục, và chọn những mật khẩu khó đoán, có kỹ tự đặc biệt. Vì hiện nay có rất nhiều phần mềm dò pass (Không liên quan CSRF nhưng đưa vào cho nó nhiều chữ :v).
Với đối tượng coder:
- Thực hiện tạo những token auto và random với từng máy, từng trình duyệt và thiết lập thời gian sống cho token đó.
- Không sử dụng phương thức GET với những request mà có ảnh hưởng đến CSDL.
- Khi lấy dữ liệu từ người dùng thì kiểm tra chặt chẽ.
- URL trong admin càng khó nhớ càng bí hiểm càng tốt.