문제

2011-04-30 3 views
2


나는 새로운 쿠키를 creat에 다음 코드를 사용, 쿠키를 만드는 Http 만에 문제가 :문제

//A.aspx 
    HttpCookie ht = new HttpCookie("www"); 
    ht.Value = "www"; 
    ht.Name = "www"; 
    ht.HttpOnly = true; 
    ht.Expires = DateTime.Now.AddDays(1); 
    Response.AppendCookie(ht); 
    Response.Redirect("B.aspx"); 

    //B.aspx 
    HttpCookie cookie = Request.Cookies["Allowed"]; 
    HttpCookie htt = Request.Cookies["www"]; 
    if (cookie != null) 
    { 
     Response.Write(cookie.HttpOnly); 
     Response.Write(htt.HttpOnly); 
    } 
    else 
    { 
     cookie = new HttpCookie("Allowed"); 
     cookie.HttpOnly = true; 
     cookie.Value = "ping"; 
     cookie.Expires = DateTime.Now.AddMinutes(2); 
     Response.Cookies.Add(cookie); 
     Response.Write(cookie.HttpOnly); 
     Response.Write(htt.HttpOnly); 

    } 

문제는 최종 결과가 항상 있다는 것입니다 : False Http 만 재산 있지만 True으로 설정됩니다.
누구든지이 사실을 알 수있는 방법을 설명 할 수 있습니까?
Thanx

답변

4

쿠키 매개 변수 (만료일, 경로, HttpOnly 등)는 브라우저에서 서버로 보내지는 것이 아니라 값만 서버로 전송됩니다. 그들을 돌려 보내는 것은 불필요한 팽창을 가져올뿐입니다. 따라서 Request.Cookies의 쿠키에는 이름과 값만 포함됩니다.

HttpOnly 값이 적용되는지 확인하려면 Firecookie 또는 이와 유사한 것을 사용하여 쿠키를 검사하십시오. 또는 JavaScript로 액세스 해보십시오. 그게 방지해야 할 사항입니다.

+0

@Matti Virkkunen하지만 httpOnly와 내 페이지의 일반 쿠키를 구분해야 할 경우 어떻게해야합니까? 그리고 httpOnly이기 때문에 어떻게 javacript에서 httpOnly 쿠키에 액세스 할 수 있습니까? –

+1

@Israa : 왜 HttpOnly와 HttpOnly를 서버 측에서 구별해야합니까? 그것은 아무 의미가 없습니다. 정말로 그렇게해야한다면, 서버에 HttpOnly 인 쿠키 이름 목록을 유지하고 어떤 쿠키인지 알아 내야합니다. –

+0

@Matti Virkkunen : 쿠키에 값을 저장하고이 쿠키가 존재하는지 확인하기 때문에 이렇게해야합니다. 그러면 페이지가 일부 데이터를 변조합니다. 따라서 누군가가 쿠키를 만들 수 있기 때문에 HttpOnly인지 알아야합니다. 동일한 이름을 사용하고 데이터를 반환하십시오. –