JavaScript를 사용하여 HttpOnly 쿠키를 읽는 방법


90

JavaScript로 보안 쿠키를 읽을 수있는 방법이 있습니까?
나는 그것을 사용하여 그것을 시도했고 보안 쿠키 및 HttpOnly 플래그에 대한이 기사에서document.cookie 볼 수있는 한 보안 쿠키에 액세스 할 수 없습니다.

누구든지 해결 방법을 제안 할 수 있습니까?


1
에서 위키 : 브라우저가 HTTPS를 통해 서버를 방문 할 때 보안 쿠키에만 사용됩니다.
Pavel Hodek 2011

6
@Pavel Hodek 잘못된 플래그입니다. "보안"쿠키 플래그는 HTTPOnly 보안 플래그와 관련이 없습니다. 그들은 끔찍한 명명 시스템을 가지고 있습니다.
rook

1
이 질문의 제목은 "HttpOnly"플래그를 포함하도록 변경되어야합니다. 이 질문은 "보안"플래그에 관한 것 같습니다.
Tom

답변:


125

HTTPOnly 플래그가 설정 되면 브라우저 마다 다른 보안 조치를 사용할 수 있습니다. 예를 들어 Opera와 Safari는 자바 스크립트가 쿠키에 쓰는 것을 막지 않습니다. 그러나 모든 주요 브라우저의 최신 버전에서는 항상 읽기가 금지되어 있습니다.

그러나 더 중요한 것은 HTTPOnly 쿠키 를 읽고 싶 습니까? 개발자 인 경우 플래그를 비활성화하고 xss에 대한 코드를 테스트하십시오. 가능하면이 플래그를 비활성화하지 않는 것이 좋습니다. HTTPOnly플래그와 "보안 플래그"항상 설정해야합니다 (쿠키를 강제로 HTTPS에서 확인할 수 있습니다).

당신이 경우 공격자 , 당신은 할 세션을 납치 . 그러나 HTTPOnly플래그 에도 불구하고 세션을 탈취하는 쉬운 방법이 있습니다. 세션 ID를 몰라도 세션을 계속 탈 수 있습니다. MySpace Samy 웜 이 바로 그렇게했습니다. XHR 을 사용하여 CSRF 토큰 을 읽고 승인 된 작업을 수행했습니다. 따라서 침입자는 로그인 한 사용자가 할 수있는 거의 모든 작업을 수행 할 수 있습니다.

사람들은 HTTPOnly깃발 에 너무 많은 믿음을 가지고 있으며 , XSS 는 여전히 악용 될 수 있습니다. 민감한 기능 주변에 장벽을 설정해야합니다. 변경된 비밀번호와 같은 경우에는 현재 비밀번호가 필요합니다. 관리자가 새 계정을 생성 하려면 XHR 로 쉽게 우회 할 수없는 CSRF 방지 기술인 captcha가 필요합니다 .


웜에 대해 자세히 설명해 주시겠습니까? 그 링크는 작동하지 않으며 인터넷에서도 많이 이해하지 못했습니다. 감사합니다.
Abhishek Jebaraj

@Abhishek Jebaraj 새미 웜 또는 CSRF 토큰을 이해하지 못한다면 먼저 동일 출처 정책
rook

http 전용 쿠키의 만료 날짜를 알고 싶습니다. 어떻게해야합니까?
PirateApp

50

HttpOnly 쿠키의 요점은 JavaScript로 액세스 할 수 없다는 것입니다.

스크립트가이를 읽는 유일한 방법 (브라우저 버그 악용 제외)은 쿠키 값을 읽고 응답 내용의 일부로 다시 에코하는 협력 스크립트를 서버에 두는 것입니다. 그러나 그렇게 할 수 있고 그렇게 할 수 있다면 왜 처음에 HttpOnly 쿠키를 사용합니까?


사용자가 특정 브라우저에서 사이트를 사용하도록 허용하기 전에 사용자 브라우저가 쿠키에 대해 HttpOnly를 올바르게 처리하는지 여부를 테스트 할 수 있습니다. HttpOnly 플래그의 브라우저 지원을 보장 할 수있는 예를 찾고 있습니다. MS는 또한 그렇게하도록 조언을하지만, 방법에 대한 더 이상의 조언은 없다 : 완화 XSS를 Http 만에
Ursegor

브라우저 버전 화이트리스트에 대한 조언을 찾았습니다. 내가 틀렸을 수도 있지만 대신 자바 스크립트의 지원을 확인하는 편리한 방법이 아닐까요? 이것에 대한 드로 박을 제안 해 주시겠습니까?
Ursegor

-7

방법 중 하나는 safari 웹 검사기를 사용하는 것입니다. 저장소 탭에서 httpOnly 여부에 관계없이 모든 쿠키를 볼 수 있으며 쿠키 Command + C를 선택하여 복사 할 수 있습니다.

문자열이 있으면 쿠키 파서 또는 일반 자바 스크립트로 쉽게 다시 구문 분석 할 수 있습니다.

여기에 이미지 설명 입력


1
FF와 Chrome도이 작업을 수행 할 수 있습니다. OP가 원하는 것과는 다릅니다.
imba-tjd 1911

@ imba-tjd 글쎄, 당신 말이 맞았지만 그 당시에 Safari를 사용하고 있었기 때문에 보증 할 수있었습니다.
pankajdoharey

이는 "사용자 입력을받는 방법"을 묻는 사람에게 "그냥 물어보고 코드에 설정"하는 것과 같습니다.
Forumulator
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.