Là lỗ hổng lợi dụng việc điều hướng trang sau khi thực hiện một hành động nào đó (thường là đăng nhập), thường là do trang web đó không kiểm tra lại param khi điều hướng. Theo xếp hạng của OWASP thì nó nằm trong top 10 nguy cơ bảo mật web năm 2013. Hacker có thể điều hướng nạn nhân đến trang web chứa mã độc, hoặc lừa để nạn nhân để chiếm đoạt tài khoản của nạn nhân Kịch bản khá đơn giản:
Phòng chống1. Ngăn chặng việc điều hướng ra ngoài trang hiện tại2. Check Referrer, Referrer lạ thì cũng không cho điều hướng luônUnencrypted CommunicationBằng cách tạo một wifi bình thường và nhử cho nạn nhân sử dụng, mọi truy vấn vào những trang không được bảo mật (không có https) sẽ bị hacker dùng một phần mềm đọc lại. Có thể nhưng gì nạn nhân làm trên trang đó không quan trọng, nhưng bằng việc phân tích các hành động và thói quen của nạn nhân, hacker có thể tìm ra được nhiều thông tin quan trọng VD:
Phòng chốngCài và cấu hình ssl cho server web User EnumerationEnumeration nghĩa là liệt kê, đại khái thì là cái khi cái thông báo lỗi cho người dùng khá là chi tiết dẫn đến việc hacker có thể lợi dụng để kiếm thông tin về web. Ví dụ như khi đăng nhập bạn thông báo chính xác "User không tồn tại" hoặc "Password không chính xác", người dùng có thể vui, nhưng bạn cũng vô tình cung cấp cho hacker những thông tin như rằng người này có hay không tồn tại trong hệ thống. Hoặc đôi khi cũng là khi phản hồi lâu hơn bình thường, hacker cũng sẽ nhận ra rằng user name này có thể tồn tại nên hiện đang phải check thêm password nên mới lâu như vậy.... Lỗi này thường xảy ra tại các đoạn đăng nhập, đăng ký, reset mật khẩu, hoặc khi xem profile của user khác. Phòng chống1. Login
2. Password Reset
3. Registration
4. Profile Pages
Information LeakageInformation Leakage - rò rỉ thông tin, nghe thì có vẻ chung chung, nhưng thật ra nó chung chung thật, tôi lần mò mãi mà cũng không chắc viết đoạn này thế nào cho đúng Vidu: hacker biết tên con mèo nhà bạn và đoán rằng có thể bạn dùng nó làm password cho tài khoản nào đó, cũng là rò rỉ thông tin. Trang web của bạn vô tình để lộ thông tin nhạy cảm của ngườ dùng, nhưng email chẳng hạn, cũng là rò rỉ thông tin. Hoặc bằng cách xem cấu trúc thông tin trả về, cấu trúc đường dẫn đến các file js, css, format của cookie,... hacker đoán ra được kĩ thuật mà bạn dùng cho web site của mình, đó cũng là rò rỉ thông tin Phòng chống1. Disable the “Server” HTTP Header and Similar Headers2. Sử dụng Clean URLLà các url có thể đọc được, dễ hiểu kể cả với người dùng không chuyên, vừa che dấu được thôn tin backend, vừa giúp người dùng dễ dàng phát hiện khi hacker dùng link giả mạo 3. Đảm bảo parameters của Cookie là dạng chung\=> thế thì không khó đoán kỹ thuật dùng ở backend hơn 4. Tắt thông báo lỗi kiểu debug ở phía client, chỉ thông báo chung chung kiểu trang không tồn tại, bạn không được phép,...5. "Làm sạch" thông tin khi đưa cho client6. Bảo mật JavaScriptNén nó lại, mã hóa cái biến, hàm,... mấy tool minify có hết đó, hoặc không thì ae encode nó cũng được, thích vui chơi thì dùng jjencode, aaencode cũng vui, nhưng cái file js nó nở ra khiếp hồn lắm =)) 7. "Vệ sinh" file template8. Đảm bảo cấu hình chính xác cho folder webPassword MismanagementXử lý password một cách an toàn là điều khó nhất, cũng là điều quan trọng nhất khi build một website. Vì nó là điều khó nhất, nên ae cũng đừng mong một thằng tí trượt tốt nghiệp vì môn văn như tôi nói rõ ràng được đoạn nào không hiểu thì bỏ não ra mà đọc thôiVấn đề này cũng nằm một phần ở phía người dùng, bạn đặt ra các rule với mong muốn người dùng sẽ chú ý đến vấn đề bảo mật và có một password mạnh, nhưng thường thì phần lớn là làm cho có lệ. Dù là vậy, đó cũng chỉ là một phần, việc xử lý, lưu trữ vẫn là việc của bạn thôi. Việc băm chặt (hashing), tra mắm muối (salt), giới hạn số lần đăng nhập sai là những vấn đề cơ bản cần lắm được. Mà từ đầu thì cũng cần phải làm rõ, bạn có cần phải làm một cái hệ thống đăng nhập riêng hay không khi đã có đăg nhập qua FB, Google rồi, nó ngon value ra ấy nên dùng thì đỡ khổ, đỡ lo, có thằng khác làm hộ rồi. Còn bắt buộc phải làm thì cũng đừng nhưng cái thằng này Cái này cũng có liên quan đến vấn đề khi xử lý quên mật khẩu, dùng bên thứ 3 như trên thì sướng, chả lo gì, còn tự viết thì khi gửi link reset về mail, nhớ đặt hạn sử dụng cho nó, 15phút, 1h, 1 ngày gì đó, và nhớ đó là hàng dùng 1 lần nhé. |