Socket.io-auth - 隐藏有效负载请求中的凭据

时间:2017-11-08 17:54:54

标签: php node.js sockets authentication encryption

我用laravel broadcaasting构建我的套接字应用程序。我制作了我的服务器脚本,然后在此脚本中添加了https :(代码可能包含错误,因为它是从内存中写入的)

var fs = require('fs');
var https = require('https');

var express = require('express');
var app = express();

var options = {
  key: fs.readFileSync('./file.pem'),
  cert: fs.readFileSync('./file.crt')
};
var serverPort = 3000;

var server = https.createServer(options, app);
var io = require('socket.io')(server);

require('socketio-auth')(io, {
  authenticate: authenticate,
  postAuthenticate: postAuthenticate,
  disconnect: disconnect,
  timeout: 1000
});

之后我添加了socketio-auth并将其修改为仅用户名和密码验证。

function authenticate(socket, data, callback) {
    if (data.username != "username") {
      return callback(new Error("User not found"));
    }
    return callback(null, user.password == "password");
  }
}

我的问题是关于我通过套接字发送的信用证。

import VueSocketio from 'vue-socket.io';

Vue.use(VueSocketio, socketio('https://socketserver.com:1923', {secure: true}));

var vm = new Vue({
  sockets:{
    connect: function(){
      console.log('socket connected')
      this.$socket.emit('authentication', {username : "username", password: "password"});
    },
  },
})

我实际上是在使用Vue和vue-socketio,但它正在使用连接以及正确获取/发送信息。

我得到的问题是当我要在谷歌浏览器控制台时,我会得到纯文本套接字发出的身份验证信息 (请求PAYLOAD:{authentication:{username:“username”,密码:“password”}})。

当我使用ssl时这是正常的吗?我的代码有问题吗? 或者我需要加密然后自己解密这些信息?

我认为通过HTTPS发送的所有内容都是加密的。

寻找你的重播。谢谢!

1 个答案:

答案 0 :(得分:0)

Okey我制作了自己的加密器。 对于客户端,我使用数据发送加密信息,使用socket.id发送验证散列。

对于服务器我解密并使用socket.id检查hmac验证。