私はsocket.ioを使用するリアルタイムWebアプリを開発しています。私の懸念は、クライアント側でこれを介してsocket.io jsファイルをロードする<script>/socket.io/socket.io.js</script>
と、ioインスタンスがグローバルオブジェクトとして公開されることです。これで、Chrome開発者ツールを開くと、サーバーへの接続を作成できます。
var socket = io.connect();
これで、誰でもイベントを発行し、クライアントが発行したイベントをリッスンしているサーバーに悪意のあるデータを送信できます。例として、クライアントコードにこれがあります。
(function (sio) {
var socket = sio.connect();
// some code here...
// once a user submitted the comment, it will emit an comment:create event to the
// server
socket.emit("comment:create", comment);
}(io));
Chrome開発者ツールでは、接続を作成してから、2番目の引数としてnullを渡すなど、アプリをクラッシュさせる可能性のある悪意のある引数を使用して同じイベントを発行できます。そのような問題を防ぐ方法はありますか?
io
編集:私の現在の解決策は、クライアント側のコードでインスタンスのローカルコピーを作成し、グローバルio
オブジェクトをnullに設定して、別の接続が確立されないようにすることです。