IT

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

itgroup 2023. 10. 25. 23:16
반응형

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

저는 "서명된 쿠키"가 실제로 무엇인지 알아내려고 노력하고 있습니다.인터넷에 별것도 없고, 이걸 해보면요.

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

그래도...브라우저에서 쿠키는 여전히 100% 정상이며, 여기에 "서명된" 것이 무엇인지 잘 모르겠습니다("비밀"을 소금으로 사용하여 암호화된 데이터와 같은 이상한 점을 클라이언트에서 "보기"를 원했습니다).

설명서에는 다음과 같이 나와 있습니다(https://github.com/expressjs/cookie-parser) :

쿠키 헤더 구문 분석 및 채우기req.cookies쿠키 이름으로 키가 지정된 개체를 사용할 수 있습니다.선택적으로 서명된 쿠키 지원을 사용 가능으로 설정할 수 있습니다.secret문자열, 할당합니다.req.secret다른 미들웨어에서도 사용할 수 있습니다.

아는 사람?

머크.

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

값(현재 쿠키)의 HMAC를 생성하고 base64에서 인코딩하여 작동합니다.쿠키를 읽었을 때, 쿠키는 서명을 다시 계산하고 쿠키에 첨부된 서명과 일치하는지 확인합니다.

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

쿠키의 내용도 숨기려면 대신 암호화하거나 서버측 세션에 저장해야 합니다.미들웨어가 이미 나와 있는지 없는지 잘 모르겠습니다.

편집

그리고 서명된 쿠키를 만들기 위해서는

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

서명된 쿠키에 액세스하려면signedCookies의 목적.req:

req.signedCookies['name']

에모스타가 언급한 것처럼 단순히 가치가 조작되지 않았는지 확인하기 위한 것입니다.이 둘을 구분하기 위해 다른 개체(req.signedCookies)에 배치되어 개발자가 의도를 나타낼 수 있습니다.만약 그것들이 다른 쿠키들과 함께 요구 쿠키들에 저장된다면, 누군가는 그것들의 전체 목적을 저버리고, 같은 이름의 서명되지 않은 쿠키를 만들 수 있을 것입니다.

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

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

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

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

브라우저에서 암호화된 서명된 쿠키와 서명된 쿠키를 추가할 수 있습니다. 편집을 사용하여 서명된 쿠키를 편집하려고 하면그러면 이 쿠키(크롬 플러그인)는 쿠키-파서가 외부 변경을 감지한 다음 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

반응형