2011-09-16 36 views
10

Tôi tự hỏi làm thế nào tôi có thể bảo đảm kết nối socket.io của tôi với máy chủ từ thứ sau.Vấn đề bảo mật Socket.io

vấn đề bảo mật:

  • Điều gì sẽ ngăn chặn người dùng nguy hiểm từ kết nối đến máy chủ ổ cắm thông qua mã phía khách hàng?

Ví dụ:

OUTSIDE DOMAIN REQUEST var socket = io.connect('http://Mydomain', {port: 4000}); 
  • Người dùng dường như có thể tạo ra hàng ngàn kết nối đồng thời chỉ bằng cách mở một cửa sổ trình duyệt khác nhau.

Làm cách nào để ngăn chặn những sự cố này?

+0

nhìn vào https://github.com/LearnBoost/socket.io/wiki/Authorizing và kiểm tra địa chỉ của người dùng (ip) và yêu cầu tiêu đề qua socket.handshake hoặc ủy quyền toàn cầu –

Trả lời

5

Bạn sẽ có thể kiểm tra các máy chủ mà liên kết giới thiệu HTTP là chính xác. Kiểm tra thông số socket.io để biết thông tin về cả http referring cũng như handshaking.

https://github.com/socketio/socket.io-protocol

Đồng thời 0.8 có xác minh liên kết giới thiệu. Havent sử dụng nó trước, nhưng điều này có thể là một nơi để bắt đầu tìm kiếm:

https://github.com/LearnBoost/socket.io/pull/481

+0

Cảm ơn bạn, nhưng nếu có nhiều kết nối từ cùng một người dùng thì sao? – Trevor

0

Vâng, nếu khách hàng (thực) của bạn đến từ một địa điểm biết rõ, bạn có thể muốn chặn mọi người khác ở cấp tường lửa. Giả sử dịch vụ của bạn có sẵn cho tất cả mọi người, bạn có thể xem xét cơ chế bắt tay khách hàng-máy chủ.

Các vấn đề liên quan