我正在使用node.js和socket.io开发.io游戏。对于websocket的概念还比较陌生,最近几天我一直在研究诸如JWT身份验证和套接字身份验证之类的安全措施,但是,我认为我并没有完全掌握它的目的以及对于我来说是否有必要游戏。 在其中,播放器使用WASD键控制其单元,因此在大多数情况下,客户端仅在按下或释放WASD键时才会发出信息。没有注册,因此没有数据库-用户只需输入名称并开始播放。 这是我应该担心身份验证的情况吗?另外,我正在考虑潜在的DDOS攻击,例如发送一个无限循环来“按下”和“释放” W键。在服务器中,按下或释放它只会更改单个变量的值。但是,在套接字上触发会导致服务器崩溃吗?如果是这样,有什么解决方法? 最后,查看此示例代码段以及注释中的问题:
var path = require('path');
var express = require('express');
var app = express();
var http = require('http');
var server = http.Server(app);
var socketIO = require('socket.io');
var io = socketIO(server);
app.set('port', 1017);
app.use('/files', express.static(__dirname + '/files'));
app.get('/', function(request, response) {
response.sendFile(path.join(__dirname, 'iogame.html'));
});
server.listen(1017, function() {
console.log('Server running on port 1017');
});
io.on('connection', function(socket) {
sendID(socket); //could another user access the data that I send to this particular socket?
socket.on('enterGame', function(data) {
//could this data be emitted by a different user in some way? (could a user 'pretend' to be on another user's socket and emit data?
});
});
如果两个问题的答案均为“是”,那么避免这种恶意活动的好方法是什么?预先感谢您的任何建议。