Programing

connect / expressjs에서 "서명 된"쿠키는 무엇입니까?

lottogame 2020. 8. 25. 19:18
반응형

connect / expressjs에서 "서명 된"쿠키는 무엇입니까?


"서명 된 쿠키"가 실제로 무엇인지 알아 내려고합니다. 인터넷에별로 없는데, 내가 이것을 시도하면 :

app.use(express.cookieParser('A secret'));

하지만 여전히 ... 쿠키는 브라우저에서 여전히 100 % 정상적이며 여기에 "서명"이 무엇인지 잘 모르겠습니다. (나는 클라이언트에서 어떤 이상한 점을 "보길"바라고있었습니다. 소금으로 "비밀"?)

설명서에는 ( https://github.com/expressjs/cookie-parser ) :

쿠키 헤더를 구문 분석 req.cookies하고 쿠키 이름으로 키가 지정된 객체로 채 웁니다 . 선택적 으로 다른 미들웨어에서 사용할 수 있도록 secret할당 하는 문자열 을 전달하여 서명 된 쿠키 지원을 활성화 req.secret할 수 있습니다.

아는 사람 있나요?

Merc.


쿠키는 계속 표시되지만 서명이 있으므로 클라이언트가 쿠키를 수정했는지 감지 할 수 있습니다.

값 (현재 쿠키)의 HMAC를 만들고 base64로 인코딩하여 작동합니다. 쿠키를 읽으면 서명을 다시 계산하고 첨부 된 서명과 일치하는지 확인합니다.

일치하지 않으면 오류가 발생합니다.

쿠키의 내용도 숨기려면 대신 암호화해야합니다 (또는 서버 측 세션에 저장). 이미 거기에 미들웨어가 있는지 확실하지 않습니다.

편집하다

그리고 서명 된 쿠키를 만들려면

res.cookie('name', 'value', {signed: true})

서명 된 쿠키에 액세스하려면 다음 signedCookies개체를 사용하십시오 req.

req.signedCookies['name']

emostar는 단순히 가치가 변조되지 않았 음을 확인하는 것이라고 언급했습니다. 두 개체를 구별하기 위해 다른 개체 (req.signedCookies)에 배치되어 개발자가 의도를 보여줄 수 있습니다. 다른 사람들과 함께 req.cookies에 저장 되었다면 누군가는 단순히 같은 이름의 서명되지 않은 쿠키를 만들어서 그 목적을 모두 무너 뜨릴 수 있습니다.


나는 이것에 대한 좋은 대답을 꽤 광범위하게 찾고 있었다. 그리고 서명 된 쿠키에 서명하는 cookie-signature데 사용되는 의 소스 코드를 cookie-parser보면 서명 된 쿠키가 무엇인지 더 잘 이해할 수 있었다.

val물론 쿠키의 값이며 secret옵션으로 추가하는 문자열입니다.cookie-parser

https://github.com/visionmedia/node-cookie-signature/blob/master/index.js#L16


나는 쿠키 파서 1.4.4 버전을 사용했습니다.

서명 된 쿠키와 브라우저에서 암호화 된 서명 된 쿠키를 추가 할 수 있습니다. editThisCookie (크롬 플러그인)를 사용하여 서명 된 쿠키를 편집하려고하면 cookie-parser가 외부 변경을 감지 한 다음 false를 값으로 설정합니다.

response.cookie('userId',401,{signed: true})

브라우저의 응답 헤더는 다음과 같이 나타납니다.

Set-Cookie: empId=s%3A101.US2oSV4TSvfkvvEQ5fj1sXsjj8rNxx2ph4VdHNTuKX8; Path=/

서명 된 쿠키 받기

request.signedCookies

https://gist.github.com/dineshbalaji/607d166f0240f932a5cb02099b0ece4c

참고 URL : https://stackoverflow.com/questions/11897965/what-are-signed-cookies-in-connect-expressjs

반응형