2013-04-26 4 views
1

XSS 공격을 방지하기 위해 httponly 플래그를 사용하는 여러 가지 방법을 시도했지만 모두 실패했습니다. 자바 코드에서 쿠키와 전면 JSP 파일에 두 개의 테스트 매개 변수를 설정 document.cookie의 경고 자바 스크립트를 포함HttpOnly 플래그가 tomcat6.0.36에서 작동하지 않습니다.

일반적인 방법은 테스트 결과를 들어 context.xml에

에 사용 Http 만 = true을 설정하는 것입니다 Java 코드에서 설정된 두 개의 테스트 매개 변수는 경고에 나타나서 표시됩니다.

자바 코드 : JSP 파일에서

Cookie cookie = new Cookie("httponlytest","testsss"); 
response.addCookie(cookie); 
Cookie cookie1 = new Cookie("testhttponly","successfu"); 
response.addCookie(cookie1); 

자바 스크립트 :

alert("cookie------------"+document.cookie); 
  1. 내가 잘못했는지 있나요?
  2. 방법을 알고 있다면 매우 유용 할 것입니다. Http 만 모르는 다른 사람을 위해

답변

0

:

Http 만 = 진정한는 자바 스크립트 브라우저의 쿠키에 액세스 할 수 있도록 상대 새로운 속성입니다.

그래서 JSESSION_ID (하이재킹 자바 세션) 등에 액세스하지 못하도록하는 브라우저 전용 보안 (XSS) 기술입니다.

그래서 항상 쿠키 자체에 HttpOnly 속성을 설정할 수 있습니다. Java 세션 ID의 경우 이제는 기본이라고 생각합니다. 적어도 그렇게해야합니다.

<Context useHttpOnly="true"> 

이것은 JSESSIONID에서만 작동하는 것 같습니다. 방금 this을 찾았습니다.

+0

답변 해 주셔서 감사합니다. – zjzhangkui

+0

당신은 문맥에서 useHttpOnly = "true"를 설정함으로써 JSESSIONID에 대한 작업 일 뿐이라는 것을 의미합니다. 백엔드 자바 코드에 설정된 쿠키는 여전히 javascript로 얻을 수 있습니다. 그렇다면 XSS 공격을 막을 수 있습니까? 자바 코드에서 쿠키를 setSecure (true)로 설정했다면 자바 스크립트에서이 쿠키를 가져올 수 없습니다. – zjzhangkui

+0

'setSecure'는'https :'를위한 것입니다. [Cookie.setHttpOnly (true)] (http://docs.oracle.com/javaee/7/api/javax/servlet/http/Cookie.html)를 사용하십시오. –

0

최근에 나는 http-only = true 쿠키를 다루고있었습니다. 내 연구 동안 나는 Mozilla와 Chrome이 자바 애플릿이 http-only = true 쿠키를 사용하는 것을 허용하지 않는다는 것을 발견했다. JsessionidSSO 쿠키에 액세스 할 때 문제가 발생했습니다. 자바 버그에 대한 내 연구 중에 발견 된 내용 this bug IE에서 InternetGetCookieEx() API가 http 전용 쿠키에 액세스하고 INTERNET_COOKIE_HTTPONLY IE8 이상 버전에서만 사용할 수 있도록 IE가 제공 한 것처럼 쿠키를 읽는 데 문제가 없습니다. 그래서 현재 버전이 java 7 update21 인 동안 http 전용 쿠키에 액세스하는 문제는 여전히 Java 7에서 수정 사항을 제안한 Java로 해결되지 않았습니다.