세션의 "비밀"옵션은 무엇입니까?


111

나는 암호화에 대해 아무것도 모른다. 세션 비밀이 무엇인지 궁금합니다.

다음과 같은 코드가 표시됩니다.

app.use(express.session({
  store: mongoStore({
    url: app.set('db-uri')
  }),
  secret: 'topsecret'
}));

비밀은 무엇이며 변경해야합니까?

답변:


83

예, 변경해야합니다. connect의 세션 비밀은 단순히 해시계산하는 데 사용됩니다 . 문자열이 없으면 세션에 대한 액세스는 본질적으로 "거부"됩니다. 약간 도움이 될 연결 문서를 살펴보십시오 .


43
변경할 수있을뿐만 아니라 변경해야합니다.
Michael Mior 2012 년

1
@MichaelMior, 얼마나 자주?
FRD

9
@FRD 내 요점은 같은 기본값을 유지해서는 안된다는 것 topsecret입니다. 비밀은 임의의 문자열이어야합니다. 이상적으로는 발견 된 경우 주기적으로 변경하는 것이 좋습니다. 그러나이를 위해서는 비밀 순환에 대한 지원이 필요하므로 기존 세션을 즉시 무효화하지 않습니다. 즉, 두 개의 세션 비밀이 동시에 유효한 것으로 간주되어야합니다. 내가 아는 한, Express는 현재 회전하는 비밀을 지원하지 않습니다.
Michael Mior 2014

7
1.11.0 이후 @MichaelMior 익스프레스 세션은 비밀 순환을 지원합니다. 문서에서 : "비밀 배열이 제공되면 첫 번째 요소 만 세션 ID 쿠키에 서명하는 데 사용되며 모든 요소는 요청에서 서명을 확인할 때 고려됩니다." (참조 expressjs / 세션 # 127 자세한 내용입니다.)
볼프강

예를 .. 할 경우이 작업을 수행 할 필요가 서명 쿠키로이 같은 일이다 :res.cookie('name', 'value', {signed: true})
무하마드 Umer

22

비밀은 HMAC로 세션을 해시하는 데 사용됩니다.

https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L256

그런 다음 비밀을 사용하여 해시에 대한 지문을 확인하여 세션 하이재킹으로부터 세션을 보호합니다.

https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L281-L287


3
하지만 해시는 세션 하이재킹으로부터 어떻게 보호합니까? 공격자가 세션 쿠키를 가지고 있다면 해시도 가지고 있지 않습니까? 공격자 쿠키를 가지고 있지 않다면 비밀 해시가 추측을 더 어렵게 만들까요?
Stuart P. Bentley

8
비밀은 해시를위한 소금입니다. 이것은 누군가가 다음과 같은 일을 더 어렵게 만듭니다. 1. 피싱 된 쿠키를 해독합니다. 2. 사용자가 할 수없는 비밀 (소금)이 없기 때문에 사용자를 가장하여 세션을 스푸핑합니다. 적절한 세션 ID를 생성하십시오.
mattdlockyer

7
이 두 링크는 ​​3 년 된 답변이기 때문에 유효하지 않습니다.
trysis

5
@mattdlockyer 이것은 세션 하이재킹으로부터 사용자를 보호하지 않습니다. 그리고 침입자는 왜 쿠키를 해독하려고합니까? 공격자가 쿠키를 가지고 있다면 세션이 끝날 때까지 이미 모든 권한을 가지고 있습니다. 사람들이 쿠키에 사용자의 암호를 저장하는 것과는 다릅니다. 그리고 jwt와 같은 것은 거의 항상 피해야합니다.
Forivin

세션의 비밀 목적에 대해 엇갈린 답변이있는 것 같습니다. 일부는 세션 하이재킹으로부터 보호한다고 말하는 반면 다른 사람들은 동의하지 않습니다. 누군가이 해시를 생성하는 실제 목적이 무엇인지 설명 할 수 있습니까? 정확하게 해시를 계산하는 것은 무엇입니까?
nawK

-9

기본적으로 세션의 데이터를 암호화하는 데 사용되는 비밀 키


8
아니, 그렇지 않습니다. 6 년 전 승인 된 답변을 참조하세요.
Quentin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.