HttpCookie.HttpOnly 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
클라이언트측 스크립트를 사용하여 쿠키에 액세스할 수 있는지 여부를 지정하는 값을 가져오거나 설정합니다.
public:
property bool HttpOnly { bool get(); void set(bool value); };
public bool HttpOnly { get; set; }
member this.HttpOnly : bool with get, set
Public Property HttpOnly As Boolean
속성 값
쿠키에 true
특성이 있어 클라이언트측 스크립트를 통해 쿠키에 액세스할 수 없으면 HttpOnly
이고, 그렇지 않으면 false
입니다. 기본값은 false
입니다.
예제
다음 코드 예제에서는 쿠키를 작성하는 방법과 ECMAScript를 HttpOnly
통해 클라이언트가 쿠키에 액세스할 수 없는 방법을 보여 줍니다.
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
// Create a new HttpCookie.
HttpCookie myHttpCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());
// By default, the HttpOnly property is set to false
// unless specified otherwise in configuration.
myHttpCookie.Name = "MyHttpCookie";
Response.AppendCookie(myHttpCookie);
// Show the name of the cookie.
Response.Write(myHttpCookie.Name);
// Create an HttpOnly cookie.
HttpCookie myHttpOnlyCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());
// Setting the HttpOnly value to true, makes
// this cookie accessible only to ASP.NET.
myHttpOnlyCookie.HttpOnly = true;
myHttpOnlyCookie.Name = "MyHttpOnlyCookie";
Response.AppendCookie(myHttpOnlyCookie);
// Show the name of the HttpOnly cookie.
Response.Write(myHttpOnlyCookie.Name);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<script type="text/javascript">
function getCookie(NameOfCookie)
{
if (document.cookie.length > 0)
{
begin = document.cookie.indexOf(NameOfCookie+"=");
if (begin != -1)
{
begin += NameOfCookie.length+1;
end = document.cookie.indexOf(";", begin);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(begin, end));
}
}
return null;
}
</script>
<script type="text/javascript">
// This code returns the cookie name.
alert("Getting HTTP Cookie");
alert(getCookie("MyHttpCookie"));
// Because the cookie is set to HttpOnly,
// this returns null.
alert("Getting HTTP Only Cookie");
alert(getCookie("MyHttpOnlyCookie"));
</script>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
' Create a new HttpCookie.
Dim myHttpCookie As New HttpCookie("LastVisit", DateTime.Now.ToString())
' By default, the HttpOnly property is set to false
' unless specified otherwise in configuration.
myHttpCookie.Name = "MyHttpCookie"
Response.AppendCookie(myHttpCookie)
' Show the name of the cookie.
Response.Write(myHttpCookie.Name)
' Create an HttpOnly cookie.
Dim myHttpOnlyCookie As New HttpCookie("LastVisit", DateTime.Now.ToString())
' Setting the HttpOnly value to true, makes
' this cookie accessible only to ASP.NET.
myHttpOnlyCookie.HttpOnly = True
myHttpOnlyCookie.Name = "MyHttpOnlyCookie"
Response.AppendCookie(myHttpOnlyCookie)
' Show the name of the HttpOnly cookie.
Response.Write(myHttpOnlyCookie.Name)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<script type="text/javascript">
function getCookie(NameOfCookie)
{
if (document.cookie.length > 0)
{
begin = document.cookie.indexOf(NameOfCookie+"=");
if (begin != -1)
{
begin += NameOfCookie.length+1;
end = document.cookie.indexOf(";", begin);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(begin, end));
}
}
return null;
}
</script>
<script type="text/javascript">
// This code returns the cookie name.
alert("Getting HTTP Cookie");
alert(getCookie("MyHttpCookie"));
// Because the cookie is set to HttpOnly,
// this returns null.
alert("Getting HTTP Only Cookie");
alert(getCookie("MyHttpOnlyCookie"));
</script>
</body>
</html>
설명
Microsoft Internet Explorer 버전 6 서비스 팩 1 이상에서는 쿠키를 도난당한 사이트 간 스크립팅 위협을 완화하는 데 도움이 되는 쿠키 속성을 HttpOnly지원합니다. 도난당한 쿠키는 ASP.NET 세션 ID 또는 양식 인증 티켓과 같이 사이트에 사용자를 식별하는 중요한 정보를 포함할 수 있으며, 사용자로 가장하거나 중요한 정보를 얻기 위해 공격자가 재생할 수 있습니다. HttpOnly
규격 브라우저에서 쿠키를 받으면 클라이언트 쪽 스크립트에 액세스할 수 없습니다.
주의
HttpOnly 속성을 설정해 true
도 네트워크 채널에 액세스할 수 있는 공격자가 쿠키에 직접 액세스하는 것을 방지할 수 없습니다. 이를 방지하려면 SSL(Secure Sockets Layer)을 사용하는 것이 좋습니다. 악의적인 사용자가 열려 있는 브라우저 창 또는 영구 쿠키가 포함된 컴퓨터를 사용하여 합법적인 사용자의 ID를 사용하여 웹 사이트에 액세스할 수 있으므로 워크스테이션 보안도 중요합니다.