그럼이 같은 cookie-session
뭔가를 구성했다고 가정하자
req.session.user_id = 123;
브라우저의 개발 도구를 보면 당신은거야 참조 2 개 쿠키 설정 :
express:sess = eyJ1c2VyX2lkIjoxMjN9
express:sess.sig = 01I_Rx2gACezZI1tdl2-NvxPq6w
쿠키 express:sess
은 base64로 인코딩됩니다. 디코딩하면 {"user_id":123}
이됩니다. 세션 데이터가 쿠키 자체에 저장된다는 것을 알아 두는 것이 중요합니다. 이는 세션의 ID가 아닙니다.
다른 쿠키 express:sess.sig
은 서명입니다. 이 서명은 키 (이 예에서는 secret
)를 사용하여 생성되며 변조를 방지하는 데 사용됩니다. 누구나 쉽게 express:sess
을 수정할 수 있지만 해당하는 express:sess.sig
도 생성 할 수있는 경우가 아니라면 서버가 변경되었음을 알 수 있습니다.
모든 말씀 드리지만, express-session
미들웨어를 살펴 보시기 바랍니다. 또한 쿠키를 사용하지만 세션 ID를 저장하기 위해 쿠키 만 사용합니다. 모든 데이터가 서버에 저장되는 쿠키에는 저장되지 않습니다. 이것은 대부분의 다른 웹 프레임 워크에서 세션이 작동하는 방식과 훨씬 비슷하지만 어느 방법이 사용자의 요구에 가장 적합한 지 분명히 말할 수는 없습니다.
어느 방법 으로든 쿠키를 사용하면 기본적으로 httponly
으로 설정됩니다. 브라우저의 개발 도구에서이를 확인할 수 있습니다. 이는 HTTP 요청에 포함되었지만 클라이언트 측 JavaScript를 통해 액세스 할 수 없음을 의미합니다. 이는 악성 코드가 쿠키를 훔치기 어렵도록하기위한 보안 수단입니다. 당신은 사용 cookie-session
이 보안 기능을 해제 할 수 있습니다 :
app.use(cookieSession({
httpOnly: false,
keys: ['secret']
}));
당신은 다음 document.cookie
를 사용하는 쿠키를 액세스 할 수 있습니다.
본인은 보안 조치라고 반복하고 권장하지 않습니다. 이것이 귀하의 신청서에 진정한 관심사인지 여부를 판단하는 것은 불가능합니다.
실제로 쿠키의 값을 구문 분석할지 또는 쿠키의 존재 여부 만 확인할지 여부는 분명하지 않습니다. 구문 분석이 필요한 경우 관련 쿠키 값을 base64로 디코딩 한 다음 JSON 디코드해야합니다.
쿠키를 유지하기 위해 선택할 수있는 다양한 방법이 있습니다. httponly
. 이 정보로 무엇을 할 것인지에 대해 더 많이 알지 못하면 구체적으로하기가 어렵습니다. Express보기 (예 : 템플릿 렌더링)를 사용하는 경우 템플릿에서 모든 작업을 수행 할 수 있습니다. SPA 지역에 있다면 관련 정보를 수집하기 위해 AJAX 요청을 사용할 수 있습니다. 한 마디로 세션 쿠키를 안전하게 유지하면서 필요한 정보를 제공하기 위해 다른 쿠키를 사용할 수도 있습니다.
그는 세션 데이터를 decyphers/cyphers하고 클라이언트 장치에 저장하는 '쿠키 세션'패키지에 대해 이야기하고 있습니다. – num8er