쿠키 의 secure,httponly 속성 설정

3163 단어 cookie
전재
1.속성 설명:
1 보안 속성
true 로 설정 하면 생 성 을 표시 하 는 쿠키 가 서버 로 안전하게 전송 되 며,즉 HTTPS 연결 에서 만 브 라 우 저 에 의 해 서버 측 에 전 달 돼 세 션 검증 이 가능 하 며,HTTP 연결 이 라면 이 정 보 를 전달 하지 않 기 때문에 쿠키 의 구체 적 인 내용 은 도난당 하지 않 습 니 다.
 
2 HttpOnly 속성
쿠키 에'HttpOnly'속성 을 설정 하면 프로그램(JS 스 크 립 트,Applet 등)을 통 해 쿠키 정 보 를 읽 을 수 없어 XSS 공격 을 효과적으로 방지 할 수 있다.
 
상기 두 속성 에 대해,
우선,secure 속성 은 정보 가 전달 되 는 과정 에서 감청 에 포 획 돼 정보 가 유출 되 는 것 을 방지 하 는 것 이 며,HttpOnly 속성 은 프로그램 이 쿠키 를 가 져 와 공격 하 는 것 을 방지 하기 위 한 것 이다.
그 다음으로 GlassFish 2.x 는 servlet 2.5 를 지원 하고 servlet 2.5 는 Session Cookie 의'HttpOnly'속성 을 지원 하지 않 는 다.하지만 Filter 를 사용 하여 일정한 처 리 를 하면 HttpOnly 속성 을 간단하게 실현 할 수 있 습 니 다.GlashFish 3.0(servlet 3.0 지원)은 기본적으로 Session Cookie 의 HttpOnly 속성 을 엽 니 다.
즉,두 가지 속성 은 쿠키 가 이 컴퓨터 에서 발생 하 는 정보 유출 문 제 를 해결 할 수 없다(FireFox 의 플러그 인 FireBug 는 쿠키 와 관련 된 정 보 를 직접 볼 수 있다).
 
 
실례
프로젝트 구조 환경:jsp+servlet+applt
 
1 HttpOnly 와 secure 속성 추가
이전 설명 에 따 르 면 GlassFish 2 는 Session Cookie 의 HttpOnly 속성 을 지원 하지 않 고 secure 속성 도 스스로 설정 해 야 하기 때문에 마지막 처리 방법 은 프로젝트 에 각각 Filter 를 추가 하여 요청 한 입구 페이지(또는 요청 후 이동 한 첫 번 째 고객 이 볼 수 있 는 페이지,보통 로그 인 페이지)에 클 라 이언 트 의 session 속성 을 다시 설정 하 는 것 입 니 다.(response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + ";Path=/ccrl;secure;HttpOnly"); 여기 서 세 션 만 사용 할 수 있다 는 것 이 이 말의 전제 임 을 알 수 있다  쿠키 라 는 유일한 쿠키 입 니 다.다른 쿠키 를 사용 하여 브 라 우 저 와 서버 간 에 상호작용 을 할 수 없습니다.그렇지 않 으 면 다른 쿠키 정보 가 삭 제 됩 니 다.다른 쿠키 를 지원 해 야 한다 면 Header 에서 공 을 들일 수 있 습 니 다)
 
2.프로그램 에서 호 환 되 지 않 는 코드 수정(ccrl 113)
(1)현상:Session Cookie 가 HttpOnly 속성 으로 설 정 된 후,프로그램 이 더 이상 클 라 이언 트 Session Cookie 의 내용 을 찾 을 수 없 기 때문에 Applet 이 URLConnection 요청 을 서버 로 보 낼 때 브 라 우 저 에서 session ID 를 읽 을 수 없어 session 의 내용 에 의존 하 는 URLConnection 이 정확 한 결 과 를 되 돌 릴 수 없습니다.
         해결:Applet 을 시작 할 때 먼저 SessionID 정 보 를 applt 에 전송 한 다음 URLConnection 에서 요청 을 보 낼 때 Session Cookie 정 보 를 다시 설정 합 니 다.urlCon.setRequestProperty("Cookie", "JSESSIONID=" + ssid + ";Path=/ccrl113;secure;HttpOnly");
 
(2)현상:Dynamic Analysis 가 시 작 될 때 jsp 페이지 에 URLConnection 을 사용 하여 servlet 에 접근 하 는 경우 가 있 지만 HTTPS 의 경우 jsp 가 URLConnection 을 사용 하여 servlet 에 접근 하 는 것 을 허용 하지 않 습 니 다(현상 추론).
         해결:servlet 의 내용 을 도구 류 나 실체 류 로 재 구성 하여 jsp 페이지 에서 사용 할 수 있 도록 합 니 다.jsp 페이지 와 servlet 는 모두 서버 쪽 이기 때문에 jsp 페이지 가 URLConnection 을 통 해 servlet 에 접근 하 는 것 을 충분히 피 할 수 있 습 니 다.
 
 
(3)제 이 보스 의 설정
/deploy/jbossweb.sar/context.xml 를 찾 았 습 니 다. 
<Context cookies="true" crossContext="true">
    <SessionCookie secure="true" httpOnly="true" />
    ......
</Context>

 
전문 적 인 도구(http://www.cnblogs.com/alanzyy/archive/2011/10/14/2212484.html,fiddler2)를 사용 하여 안전성 을 테스트 할 수 있다.

좋은 웹페이지 즐겨찾기