Việc mở liên kết trong tab mới là điều khá phổ biến khi xây dựng website. Tuy nhiên, ít ai biết rằng hành động này có thể vô tình khiến người dùng dễ bị tấn công bởi kỹ thuật "Tabnabbing". Vậy kỹ thuật này là gì và có cách nào để phòng tránh?
Tabnabbing là gì?
Tabnabbing là một dạng tấn công lừa đảo (phishing) nhắm vào các tab không hoạt động trên trình duyệt. Khi bạn đang tập trung vào một tab, liên kết ở tab đã mở trước đó có thể bị kẻ xấu chiếm quyền. Điều này khiến bạn bị chuyển hướng từ trang web dự định sang một trang web giả mạo.
Điểm mấu chốt của Tabnabbing nằm ở việc trang web độc hại được thiết kế rất giống với trang web thật. Do đó, người dùng thường không nhận ra sự khác biệt khi quay lại tab đó. Họ vô tình cung cấp thông tin cá nhân mà không biết rằng kẻ tấn công đang chờ đợi để đánh cắp chúng.
Kẻ tấn công có thể lợi dụng nhiều cách để xâm nhập vào một trang web uy tín, bao gồm:
- Quảng cáo độc hại: Lẩn trốn trong các banner quảng cáo.
- Tiện ích của bên thứ ba: Khai thác lỗ hổng bảo mật của các tiện ích được nhúng trên trang web.
- Nội dung do người dùng tạo ra: Các bài đăng trên diễn đàn, bình luận chứa mã JavaScript độc hại.
Ví dụ thực tế về tấn công Tabnabbing
Hãy tưởng tượng một trang web yêu cầu thông tin cá nhân của bạn và tự động đăng xuất khi bạn không hoạt động trong một thời gian nhất định. Lúc này, kẻ tấn công có thể nhanh chóng thay thế trang web thật bằng một trang giả mạo. Khi bạn quay lại tab đó, bạn sẽ không nhận ra sự khác biệt và tiếp tục đăng nhập, vô tình trao thông tin cho kẻ xấu.
Mục đích của Tabnabbing, giống như các cuộc tấn công lừa đảo khác, là lừa người dùng nhập thông tin nhạy cảm (thường là thông tin đăng nhập hoặc tài chính) vào trang web giả mạo.
Để bảo vệ người dùng khỏi nguy cơ này, bạn có thể sử dụng thuộc tính rel="noopener noreferrer" khi tạo liên kết mở ra tab mới trong HTML.
Cách mở liên kết trong tab mới trong HTML
Để mở liên kết trong tab mới, bạn chỉ cần thêm thuộc tính target="_blank" vào thẻ <a> trong HTML như sau:
<p>Tìm hiểu về lập trình tại <a href ="https://viblo.asia/" target="_blank">Viblo.asia</a><p/>
Trên trang web khi này liên kết sẽ hiển thị như sau: "Tìm hiểu về lập trình tại Viblo.asia"
Cách thêm thuộc tính noopener và noreferrer
Tuy nhiên, càng mở nhiều tab, bạn càng dễ bị tấn công bởi Tabnabbing. Bởi vì tab càng không hoạt động lâu thì nguy cơ bị kẻ xấu lợi dụng càng cao.
Để ngăn chặn điều này, bạn nên thêm thuộc tính rel="noopener noreferrer" vào thẻ <a> như sau:
<p>Tìm hiểu về lập trình tại <a href ="https://viblo.asia/" target="_blank" rel="noopener noreferrer">Viblo.asia</a><p/>
Lợi ích của việc sử dụng noopener và noreferrer
noopener ngăn chặn các đoạn mã độc hại truy cập vào tab hoặc cửa sổ đã mở liên kết hiện tại. Điều này được thực hiện bằng cách đặt thuộc tính Window.opener() thành null.
noreferrer ngăn trang web bên ngoài biết rằng bạn đã liên kết đến họ. Điều này đồng nghĩa với việc dữ liệu truy cập của bạn sẽ không được gửi đến trang web đó.
Tóm lại, việc hiểu rõ về Tabnabbing và cách phòng tránh là vô cùng cần thiết để đảm bảo an toàn cho website và bảo vệ người dùng khỏi những rủi ro tiềm ẩn trên không gian mạng.