2009-06-02 3 views
1

FormsAuthentication을 사용할 때 Authcookie는 어디에 배치됩니까? 서버 또는 클라이언트에서? 그리고 클라이언트가 쿠키를 사용할 수 없게되면 FormsAuthentication이 여전히 작동합니까?C# Authcookie 세트는 어디에 있습니까?

답변

1

방화 광을 사용하는 경우 클라이언트에 배치됩니다. 응답에서 다음과 같이 보일 것입니다. .ASPXFORMSAUTH = C8390F0E68890DF5C731DB2B .... 양식 인증은 여전히 ​​작동하지만 브라우저의 모든 URL에서 설정됩니다. 괜찮은 문서 here

+0

어디에서 방화범 입력이 가능합니까? – Martijn

+0

Net 섹션에서 항목을 확장하면 헤더 탭과 응답 탭이 표시됩니다. – Rob

0

쿠키는 항상 클라이언트 측에 저장됩니다.

쿠키를 지원하는 브라우저는 Set-Cookie HTTP 헤더 (쿠키가 사용 가능한 경우)를 해석하고 저장할 쿠키의 세부 정보 (이름, 값, 도메인, 경로 및 만료)에 대해이 헤더의 값을 구문 분석하고 쿠키 값을 어딘가에 저장합니다 . 영구 쿠키 (즉 만료 값이 설정된 쿠키)의 경우 일반적으로이 위치는 파일 시스템의 어딘가에 있지만 위치는 브라우저에 따라 다릅니다. 세션 쿠키 (브라우저가 열려있는 한 유효 기간이없는 쿠키)의 경우 이는 아마도 메모리 내 데이터 구조 일 것입니다.

4

클라이언트. 아마도 cookieless는 web.config를 변경하여 지원되지만 구현에 성공하지 못했습니다. 쿠키가 사용되면 쿠키는 웹 페이지의 URI에 저장됩니다 (예 : http://MySite.com/MyWebApplication/F(XXXX))/home.aspx). forms Element for authentication (ASP.NET Settings Schema)에서

<forms 
    cookieless="[UseUri|UseCookie|AutoDetect|UseDeviceProfile]" 
</forms> 

는 :

AJAX 사용 ASP.NET 웹 사이트에서

는 쿠키 속성의 기본 값 UseCookies을 사용합니다. URL에 인코딩 된 쿠키를 사용하는 설정은 ASP.NET AJAX 클라이언트 스크립트 라이브러리에서 지원되지 않습니다.

UseCookies 장치에 관계없이 항상 쿠키가 사용되도록 지정합니다.

UseUri 쿠키를 절대 사용하지 않도록 지정합니다.

자동 검색 장치 프로파일이 쿠키를 지원하면 쿠키가 사용되도록 지정합니다. 그렇지 않으면 쿠키가 사용되지 않습니다. 쿠키를 지원하는 것으로 알려진 데스크탑 브라우저의 경우 검색 메커니즘을 사용하여 쿠키를 사용하도록 설정합니다 (사용 가능한 경우). 장치가 쿠키를 지원하지 않으면 프로빙 메커니즘이 사용되지 않습니다.

UseDeviceProfile 브라우저가 쿠키를 지원하면 쿠키가 사용되도록 지정합니다. 그렇지 않으면 쿠키가 사용되지 않습니다. 쿠키를 지원하는 장치의 경우 쿠키 지원이 사용되는지 여부를 확인하기 위해 검색을 시도하지 않습니다.

이 특성은 .NET Framework 버전 2.0에서 새로 추가되었습니다.

기본값은 UseDeviceProfile입니다.

쿠키를 사용하면 쿠키를 요구하는 것보다 덜 안전 할 수 있습니다. Understand How the ASP.NET Cookieless Feature Works에서 :

(쿠키를 사용하는 경우 제공되지 않음) 다른 사용자에게 URL을 보내는 사용자에 링크 된 취약점 (이메일 및 IM을 통해 예를 들어)입니다 쿠키 기능에 고유 한 하나의 큰 문제.FormsAuthentication에 대해이 기능을 설정하고 사용자가 자신의 URL을 다른 사용자에게 전자 메일로 보내면 두 번째 사용자는 첫 번째 사용자의 자격 증명을 사용하여 서버에 자동으로 로그온합니다. 하나의 대응책은 폼 인증에 대한 쿠키 타임 아웃을 줄임으로써 (앞의 (b)에서 설명한 바와 같이) 이것이 일어날 수있는 시간 창을 줄이는 것입니다.

0

이 점에 대해 더 잘 이해하려면 FireFox의 HttpFox 확장명과 같은 HTTP 분석기를 사용하는 것이 좋습니다. 인증에서 얻은 쿠키가 저장되어 저장되어 있는지 확인할 수 있습니다.

0

서버. Reflector를 사용하여 FormsAuthentication 클래스를 파헤 치면 쿠키가 초기화되고 설정되는 위치를 추적 할 수 있습니다.

Reflector은 .NET 어셈블리를 "디 컴파일"하는 무료 도구로서 사용자가 수행하는 작업을 더 많이 또는 덜 볼 수 있습니다. IL에서는 원본 소스 코드가 표시되지 않지만 재구성 된 버전은 표시됩니다. 이 사용

, 파일

c:\Windows\Microsoft.NET\Framework\<version>\System.Web.dll 

을 열고 System.Web.Security 네임 스페이스의 클래스있는 FormsAuthentication을 볼 수 있습니다. 거기, 당신은 쿠키가 만들어지고 민간 오버로드 된 메서드 같이 RedirectFromLoginPage에 의해 호출 (또는 GetAuthCookie의 공개 버전으로)되어

GetAuthCookie(string userName, bool createPersistentCookie, string strCookiePath, bool hexEncodedTicket) 

에 설정되어있는 것을 볼 수 있습니다.

이 파일을 읽으면 .NET이 쿠키없는 인증을 처리하는 방법을 확인할 수도 있습니다.

+0

어떤 사람들은 그것이 클라이언트에 저장되어 있다고 말하기는하지만 서버에서는 달리 말합니다. 반사경이 무엇이고 어떻게 사용하는지 내게 말할 수 있습니까? – Martijn

+0

쿠키는 * 클라이언트에 저장됩니다 (쿠키의 전체 지점). 각 요청 및 응답에서 앞뒤로 전송됩니다. 당신은 질문이 어디 있는지 * 설정 *, 그리고 그것은 처음에 서버에 설정됩니다. – harpo

관련 문제