¿Cómo aseguro Socket.IO?

He estado trabajando con Socket.IO durante unos días y ha sido extremadamente emocionante y aún más frustrante. La falta de documentación / tutoriales actuales ha hecho que el aprendizaje sea muy difícil. Finalmente logré crear un sistema de chat básico, pero hay una pregunta evidente. ¿Cómo lo aseguro?

¿Qué impide que un usuario malintencionado copie (o edite) mi código y se conecte a mi servidor? Puedo tomar el nombre de usuario de mi script PHP y enviarlo a Socket.IO para poder reconocerlo como ese usuario (y el PHP tiene seguridad, por supuesto), pero ¿qué impide que alguien envíe un nombre de usuario no registrado?

¿Cómo puedo asegurarme de que los eventos enviados son auténticos y no han sido alterados?

Mi socket básico de chat.io para referencias.

Servidor:

var io = require('socket.io').listen(8080);
var connectCounter = 0;
io.sockets.on('connection', function (socket) {
connectCounter++;
 console.log('People online: ', connectCounter);

socket.on('set username', function(username) {
socket.set('username', username, function() {
console.log('Connect', username);

    });
});
socket.on('emit_msg', function (msg) {
    // Get the variable 'username'

socket.get('username', function (err, username) {
      console.log('Chat message by', username);
      io.sockets.volatile.emit( 'broadcast_msg' , username + ': ' + msg );
    });

  });

socket.on('disconnect', function() { connectCounter--; });
});

Cliente:

    <?php session_start() ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>untitled</title>
</head>
<body>
<input id='message' type='text'>
<div id="content"></div>
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-latest.js"></script>

<script>
  var socket = io.connect('http://localhost:8080');
$.ajax({
type: 'GET',
  url: 'https://mysite.com/execs/login.php?login_check=true',
  dataType: 'json',
   success: function(data) {
var username = data.username;
socket.emit('set username', username, function (data){
});

}
});

  socket.on('broadcast_msg', function (data) {
        console.log('Get broadcasted msg:', data);
        var msg = '<li>' + data + '</li>';
        $('#content').append(msg);
      });


$('#message').keydown(function(e) {
if(e.keyCode == 13) {
e.stopPropagation();
          var txt = $(this).val();
          $(this).val('');
          socket.emit('emit_msg', txt, function (data){
            console.log('Emit Broadcast msg', data);
          });
}
});
</script>
</body>
</html>

Todo funciona bien, excepto por no tener absolutamente ninguna seguridad.

Respuestas a la pregunta(2)

Su respuesta a la pregunta