서버가 쿠키를 생성했는지 확인할 수 있도록 서명이 있습니다. 일부 공격자가 아닌 쿠키가 생성되었는지 확인할 수 있습니다.
서명에 사용 된 비밀을 아는 사람 만 동일한 값으로 서명 할 수 있습니다.
"s :"서명 된 쿠키 인 것을 쉽게 알 수 있습니다. 서명되지 않은 다른 형식과 달리 서명 된 쿠키입니다.
서명 된 쿠키에서 데이터를 검색하는 방법이며 서명이 잘못되었습니다. 실제 앱에서 추출 된 부분 코드 만 있지만 아이디어를 얻어야합니다.
var cookie = require('cookie');
var connect = require('connect');
var secret = "same secret used to sign cookies";
socketio.set('authorization', function(data, cb) {
if (data.headers.cookie) {
var sessionCookie = cookie.parse(data.headers.cookie);
var sessionID = connect.utils.parseSignedCookie(sessionCookie['connect.sid'], secret);
// do something here with decoded value
}
});
헤더에 액세스 할 수 있도록 socket.io의 "authorization"기능을 사용해야합니다. 이 코드는 xhr-polling 전송을 사용할 때 작동합니다. 예를 들어 websocket에서 작동하는지 확신 할 수 없습니다.
이렇게 socket.io 또는 SockJS에서 수동으로 어떻게 사용합니까? – Sam
모든 시드는 자체 서명 된 서명을 가져야합니다. 그렇지 않으면 목적을 달성하지 못합니다. 하지만 미들웨어는 서명이 유효하다는 것을 어떻게 알 수 있습니까? 세션에 저장합니까? 또한, 왜 서명 대신 정말로 긴 sid를 만들지 않는 것이 좋을까요? – Sam
위의 코드에있는 비밀은 express.session()에 전달되어 쿠키에 서명 한 것입니다. 서명은 내용과 해시의 해시입니다. –