Là mặt nạ thực sự cần thiết khi gửi từ máy khách Websocket


10

Websocket RFC hiện tại yêu cầu các máy khách websocket che giấu tất cả dữ liệu trong các khung khi gửi (nhưng máy chủ không bắt buộc). Lý do giao thức được thiết kế theo cách này là để ngăn dữ liệu khung bị thay đổi bởi các dịch vụ độc hại giữa máy khách và máy chủ (proxy, v.v.). Tuy nhiên, khóa mặt nạ vẫn được biết đến với các dịch vụ như vậy (nó được gửi trên cơ sở mỗi khung ở đầu mỗi khung)

Tôi có sai không khi cho rằng các dịch vụ như vậy vẫn có thể sử dụng khóa để vạch mặt, thay đổi và hơn là che lại nội dung trước khi chuyển khung sang điểm tiếp theo? Nếu tôi không sai, làm thế nào để khắc phục lỗ hổng được cho là này?

Câu trả lời:


13

Mục 10.3 của RFC giải thích chính xác lý do tại sao cần phải đeo mặt nạ. Đó là một phản ứng rất cụ thể đối với một kỹ thuật hack cụ thể. Vấn đề mà nó đang cố gắng giải quyết được mô tả trong một bài báo năm 2010 có tên là Nói với chính mình để giải trí và kiếm lợi nhuận bởi một số người bảo mật vận tải Internet sắc nét nhất.

Mặt nạ máy khách đến máy chủ được sử dụng bởi giao thức Websocket để ngăn các proxy vô tình xử lý dữ liệu WebSockets như một yêu cầu HTTP có thể lưu trong bộ nhớ cache. Bạn có thể tranh luận liệu điều đó có làm xáo trộn các proxy ngu ngốc (và tôi nghĩ là vậy), nhưng đó là lý do.


Có, nhưng sau khi làm việc với một tay đầy đủ các dịch vụ Websocket (cả phía máy khách và phía máy chủ) Tôi cảm thấy mình hiểu rõ về giao thức và tôi không thấy nó sẽ là một thách thức đối với một proxy để vạch mặt và sửa đổi khung trên bay. a) Khóa mặt nạ không dựa trên dữ liệu [chẳng hạn như hàm băm], b) khóa mặt nạ không thể dự đoán được vì vậy người đàn ông ở giữa có thể thay đổi dữ liệu chính khóa đó, c) (tôi tin) một proxy có thể có khả năng vượt qua các khung hoàn toàn mới, không được yêu cầu [được che dấu đúng cách và tất cả], với tư cách là một khách hàng hợp lệ sau khi một phiên khách hợp lệ được tạo / cho phép / lén lút qua nó
JSON

Như đã nói, tôi cũng hiểu rằng tôi có thể không có kiến ​​thức và kinh nghiệm về nhiều thiết lập trên bảng của họ khi quyết định này được đưa ra.
JSON

3
Âm thanh như bạn đã không đọc phần đó hoặc bài báo mà nó tham khảo. Việc che dấu không ngăn các proxy đọc dữ liệu, nó ngăn không cho họ vô tình coi dữ liệu WebSockets như một yêu cầu HTTP có thể lưu trong bộ nhớ cache. Bạn có thể tranh luận liệu điều đó có làm xáo trộn các proxy ngu ngốc (và tôi nghĩ là vậy), nhưng đó là lý do.
Ross Patterson

+1 cho lời giải thích. Có vẻ như nó sẽ có một câu trả lời tốt hơn. Nếu bạn có thể di chuyển chỉnh sửa câu trả lời ban đầu của bạn, nó sẽ là tuyệt vời.
JSON

2

Tạo mặt nạ là vô dụng với wss://aka WebSockets qua SSL / TLS. Vì nên sử dụng SSL / TLS bất cứ khi nào có thể, bạn có thể kết luận hợp lý rằng mặt nạ bao gồm trường hợp sử dụng cận biên.


1
Đây thực sự nên là một bình luận, nhưng bạn chưa có đủ danh tiếng ....
Adam Zuckerman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.