WebSockets - Bảo mật
Giao thức nên được thiết kế vì lý do bảo mật. WebSocket là một giao thức hoàn toàn mới và không phải tất cả các trình duyệt web đều triển khai nó một cách chính xác. Ví dụ, một số trong số chúng vẫn cho phép kết hợp HTTP và WS, mặc dù thông số kỹ thuật ngụ ý ngược lại. Trong chương này, chúng ta sẽ thảo luận về một số cuộc tấn công bảo mật phổ biến mà người dùng cần lưu ý.
Từ chối dịch vụ
Các cuộc tấn công từ chối dịch vụ (DoS) cố gắng làm cho một máy hoặc tài nguyên mạng không khả dụng cho người dùng yêu cầu nó. Giả sử ai đó thực hiện một số lượng vô hạn yêu cầu đến một máy chủ web không có hoặc khoảng thời gian nhỏ. Máy chủ không thể xử lý từng kết nối và sẽ ngừng phản hồi hoặc sẽ tiếp tục phản hồi quá chậm. Điều này có thể được gọi là tấn công từ chối dịch vụ.
Từ chối dịch vụ rất khó chịu cho người dùng cuối, những người thậm chí không thể tải một trang web.
Tấn công DoS thậm chí có thể áp dụng trên các giao tiếp ngang hàng, buộc các máy khách của mạng P2P phải đồng thời kết nối với máy chủ web nạn nhân.
Man-in-the-middle
Hãy để chúng tôi hiểu điều này với sự trợ giúp của một ví dụ.
Giả sử một người A đang trò chuyện với bạn của anh ấy Bthông qua một ứng dụng khách IM. Người thứ ba nào đó muốn xem các tin nhắn mà bạn trao đổi. Vì vậy, anh ta tạo ra một kết nối độc lập với cả hai người. Anh ấy cũng gửi tin nhắn cho ngườiA và bạn của anh ấy B, như một trung gian vô hình cho giao tiếp của bạn. Đây được gọi là một cuộc tấn công man-in-the-middle.
Kiểu tấn công man-in-the-middle dễ dàng hơn đối với các kết nối không được mã hóa, vì kẻ xâm nhập có thể đọc trực tiếp các gói. Khi kết nối được mã hóa, kẻ tấn công phải giải mã thông tin, điều này có thể quá khó.
Từ khía cạnh kỹ thuật, kẻ tấn công chặn một cuộc trao đổi thông điệp khóa công khai và gửi thông điệp trong khi thay thế khóa được yêu cầu bằng khóa của chính mình. Rõ ràng, một chiến lược chắc chắn để làm cho công việc của kẻ tấn công trở nên khó khăn là sử dụng SSH với WebSockets.
Hầu hết khi trao đổi dữ liệu quan trọng, hãy thích kết nối bảo mật WSS thay vì WS không được mã hóa.
XSS
Cross-site scripting (XSS) là một lỗ hổng cho phép kẻ tấn công đưa các tập lệnh phía máy khách vào các trang web hoặc ứng dụng. Kẻ tấn công có thể gửi mã HTML hoặc Javascript bằng cách sử dụng các trung tâm ứng dụng của bạn và để mã này được thực thi trên máy khách.
Cơ chế phòng thủ gốc của WebSocket
Theo mặc định, giao thức WebSocket được thiết kế để bảo mật. Trong thế giới thực, người dùng có thể gặp phải các sự cố khác nhau có thể xảy ra do triển khai trình duyệt kém. Theo thời gian, các nhà cung cấp trình duyệt sẽ khắc phục mọi sự cố ngay lập tức.
Một lớp bảo mật bổ sung được thêm vào khi kết nối WebSocket an toàn qua SSH (hoặc TLS) được sử dụng.
Trong thế giới WebSocket, mối quan tâm chính là về hiệu suất của một kết nối an toàn. Mặc dù vẫn còn một lớp TLS bổ sung ở trên cùng, nhưng bản thân giao thức đã chứa các tính năng tối ưu hóa cho loại hình sử dụng này, hơn nữa, WSS hoạt động trơn tru hơn thông qua proxy.
Tạo mặt nạ từ máy khách đến máy chủ
Mọi thông báo được truyền giữa máy chủ WebSocket và máy khách WebSocket đều chứa một khóa cụ thể, được đặt tên là khóa che, cho phép bất kỳ bên trung gian nào tuân thủ WebSocket để vạch mặt và kiểm tra thông báo. Nếu người trung gian không tuân thủ WebSocket, thì thông báo không thể bị ảnh hưởng. Trình duyệt triển khai giao thức WebSocket xử lý việc che giấu.
Hộp công cụ bảo mật
Cuối cùng, các công cụ hữu ích có thể được trình bày để điều tra luồng thông tin giữa máy khách và máy chủ WebSocket của bạn, phân tích dữ liệu được trao đổi và xác định các rủi ro có thể xảy ra.
Công cụ dành cho nhà phát triển trình duyệt
Chrome, Firefox và Opera là những trình duyệt tuyệt vời về mặt hỗ trợ nhà phát triển. Các công cụ tích hợp của họ giúp chúng tôi xác định hầu hết mọi khía cạnh của các tương tác và tài nguyên phía máy khách. Nó đóng một vai trò lớn cho mục đích bảo mật.