쿠키를 기반으로 한 액세스 제한이있는 사이트에서 AJAX를 사용하는 경우 JavaScript는 쿠키에 액세스해야합니다. HttpOnly 쿠키는 AJAX 사이트에서 작동합니까?
편집 : Microsoft는 HttpOnly가 지정된 경우 쿠키에 대한 JavaScript 액세스를 허용하지 않음으로써 XSS 공격을 방지하는 방법을 만들었습니다. FireFox는 나중에 이것을 채택했습니다. 그래서 내 질문은 : 당신이 StackOverflow와 같은 사이트에서 AJAX를 사용하는 경우 HTTP 전용 쿠키가 옵션입니까?
편집 2 : 질문 2. HttpOnly의 목적이 쿠키에 대한 JavaScript 액세스를 방지하는 것인데 XmlHttpRequest 객체를 통해 JavaScript를 통해 쿠키를 검색 할 수 있다면 HttpOnly의 요점은 무엇 입니까?
편집 3 : 다음은 Wikipedia의 인용문입니다.
브라우저가 이러한 쿠키를 받으면 다음 HTTP 교환에서 평소와 같이 쿠키를 사용해야하지만 클라이언트 측 스크립트에서는 볼 수 없게됩니다. [32]
HttpOnly
플래그는 모든 표준의 일부가 아니며, 모든 브라우저에서 구현되지 않습니다. 현재 XMLHTTPRequest를 통해 세션 쿠키를 읽거나 쓰는 것을 막을 수는 없습니다. [33].
나는이 이해 document.cookie
는 Http 만을 사용할 때 차단됩니다. 그러나 XMLHttpRequest 객체에서 쿠키 값을 계속 읽을 수있어 XSS를 허용합니다. HttpOnly는 어떻게 당신을 더 안전한가요? 쿠키를 기본적으로 읽기 전용으로 만들었습니까?
귀하의 예에서는에 쓸 수 없지만 document.cookie
XMLHttpRequest 객체를 사용하여 쿠키를 훔쳐 내 도메인에 게시 할 수 있습니다.
<script type="text/javascript">
var req = null;
try { req = new XMLHttpRequest(); } catch(e) {}
if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
req.open('GET', 'http://stackoverflow.com/', false);
req.send(null);
alert(req.getAllResponseHeaders());
</script>
편집 4 : 죄송합니다. XMLHttpRequest를 StackOverflow 도메인으로 보낸 다음 getAllResponseHeaders () 결과를 문자열에 저장하고 쿠키를 정규식으로 저장 한 다음 외부 도메인에 게시 할 수 있음을 의미했습니다. Wikipedia와 ha.ckers가 이것에 관해 나와 동의하는 것처럼 보이지만, 나는 다시 교육 받기를 원할 것입니다 ...
최종 편집 : 아, 분명히 두 사이트 모두 잘못 되었습니다 . 실제로 FireFox 의 버그입니다 . 실제로 IE6 & 7은 현재 HttpOnly를 완벽하게 지원하는 유일한 브라우저입니다.
내가 배운 모든 것을 되풀이하려면 :
- HttpOnly는 IE7 및 FireFox에서 document.cookie에 대한 모든 액세스를 제한합니다 (다른 브라우저에 대해서는 확실하지 않음)
- HttpOnly는 IE7의 XMLHttpObject.getAllResponseHeaders ()에있는 응답 헤더에서 쿠키 정보를 제거합니다.
- XMLHttpObjects는 원래 도메인에만 제출 될 수 있으므로 쿠키의 도메인 간 게시는 없습니다.
편집 :이 정보는 더 이상 최신 정보가 아닙니다.