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.