찾다
백엔드 개발C#.Net 튜토리얼쿠키 교차 도메인 문제에 관한 asp.net

쿠키는 웹 개발자가 사용자의 로그인 상태를 유지할 수 있게 해주는 훌륭한 발명품입니다. 그러나 사이트에 도메인 이름이 두 개 이상 있으면 문제가 발생합니다. 쿠키 사양에 따르면 쿠키는 하나의 도메인 이름에만 사용할 수 있으며 다른 도메인 이름으로 보낼 수 없습니다. 따라서 하나의 도메인 이름에 대해 브라우저에 쿠키가 설정되어 있으면 해당 쿠키는 다른 도메인 이름에는 유효하지 않습니다. 사용자가 귀하의 사이트 중 하나에서 로그인하고 다른 도메인에서도 로그인하도록 하려는 경우 이는 실제 문제가 될 수 있습니다.

2차 도메인 이름 전체

우리는 쿠키가 2차 도메인 이름 전체에 액세스할 수 있다는 것을 알고 있습니다. 예를 들어, www.test1. com은 쿠키를 생성하며, bbs.test1.com과 같은 2차 도메인 이름에 해당하는 애플리케이션에 접근하려면 쿠키 생성 시 도메인 매개변수 domain=test1.com을 설정해야 합니다. asp.net을 예로 들면 코드는 다음과 같습니다.

HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com");
cookie.Domain = "test1.com";
cookie.Path = "/";
Response.Cookies.Add(cookie);

교차 최상위 도메인 이름

2차 도메인 이름이 아니고 다른 상위에 있는 경우 -레벨 도메인 이름(예: www.test1.com이 위치한 곳) 웹 응용 프로그램이 쿠키를 생성하고 www.test2.com 응용 프로그램 또는 해당 두 번째 수준 도메인 이름에 액세스하려고 합니다. 어떻게 해야 합니까? 우리는 기존의 대응책으로는 접근할 수 없다는 것을 알고 있습니다. 핵심은 접근할 수 있는 방법이 있는지 확인하는 것입니다. 사실 쿠키는 마음대로 도메인 간을 달성하는 것이 아니라 특정 조건 하에서 도메인을 넘을 수 있습니다.

www.test1.com과 www.test2.com 두 사이트가 쿠키 교차 도메인 액세스를 어떻게 구현하는지 테스트해 보겠습니다. 관례에 따르면 도메인 이름을 구성하려면 최상위 도메인 이름 2개와 DNS 서버가 필요합니다. 그렇지 않으면 확인할 수 없지만 여기서는 그렇게 번거롭게 호스트를 수정하여 시뮬레이션할 수 있습니다. 파일. c:windowssystem32driversetc에 호스트 파일이 있습니다. 끝에

127.0.0.1    www.test1.com
127.0.0.1    www.test2.com

줄을 추가하면 위의 도메인 이름을 사용하여 로컬 루프백 주소에 액세스할 수 있습니다. 우리는 IIS에 일련의 프로그램을 배포하기만 하면 됩니다. IP는 로컬 컴퓨터의 루프백 주소이며 두 개의 도메인 이름을 사용하여 액세스할 수 있습니다.

Default.aspx, SSO.ashx 및 GetCookie.aspx라는 세 개의 새 페이지를 만듭니다.

여기서 Default.aspx는 www.test1.com의 페이지이고 접속된 주소는 http://www.test1.com/Default.aspx입니다. 프론트엔드 코드를 보세요. 백엔드 코드가 없습니다

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Admin10000.Web.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
              <script type="text/javascript">
            var _frm = document.createElement("iframe");
            _frm.style.display = "none";
            _frm.src = "http://www.test2.com/SSO.ashx";
            document.body.appendChild(_frm);  
        </script>
       </div>
    </form>
</body>
</html>

다른 하나는 SSO.ashx 페이지인데, www.test2.com 페이지인 것 같습니다. , 프런트 엔드에는 코드가 없으며 백엔드 코드는 다음과 같습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.SessionState;
 
namespace Admin10000.Web
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class SSO : IHttpHandler
    {
 
        public void ProcessRequest(HttpContext context)
        {
            HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com");
            cookie.Domain = "test2.com";
            cookie.Path = "/";
            cookie.Expires = DateTime.Now.AddMinutes(10000);
            context.Response.Cookies.Add(cookie);
 
            context.Response.ContentType = "text/plain";
            context.Response.AddHeader("P3P", "CP=CAO PSA OUR");
            context.Response.Write("");
        }
 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

마지막은 www.test2 아래의 페이지이기도 한 GetCookie.aspx 페이지입니다. .com. 프런트엔드 코드는 없고 백엔드 코드만 있습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace Admin10000.Web
{
    public partial class GetCookie : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Cookies["name"] != null)
            {
                Response.Write(Request.Cookies["name"].Value);
            }
        }
    }
}

OK 이제 http://www.test1.com/Default에 액세스한 후 테스트에 액세스합니다. aspx를 사용하면 iframe을 통해 SSO.ashx 페이지가 로드되고 백그라운드 코드가 실행되어 쿠키가 생성된 다음 http://www.test2.com/GetCookie.aspx 해당 쿠키를 가져옵니다. www.test1.com에서 생성된 쿠키는 www.test2.com에서 액세스할 수 있습니다.

참고 사항:

admin10000.com은 SSO.ashx의 배경 코드에 다음 문장이 있다는 메시지를 표시합니다. context.Response.AddHeader("P3P", "CP=CAO PSA OUR "); P3P 응답 헤더를 설정하는 데 사용됩니다. IE 브라우저에서 지원하는 P3P로 인해 iframe 크로스 사이트 시 쿠키가 차단되어 쿠키가 생성되지 않기 때문입니다. (FireFox는 현재 P3P 보안 기능을 지원하지 않으며 FireFox에는 당연히 이 문제가 없습니다. P3P 응답 헤더를 추가할 필요가 없습니다.)

iframe의 src 속성을 사용하여 쿠키 값을 재설정합니다. test1.com 도메인을 get 매개변수로 지정합니다. test2.com 도메인 아래의 SSO.ashx 페이지로 이동하면 SSO.ashx는 test1.com 도메인에서 전달된 쿠키 값을 얻고 얻은 값을 쿠키에 씁니다. 도메인 간 쿠키 전송.

또한 Default.aspx 페이지를 JS 호출 형식으로 변경할 수도 있습니다.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Admin10000.Web.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <script type="text/javascript" src="http://www.test2.com/SSO.ashx"></script>
    </div>
    </form>
</body>
</html>


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
C# .NET : 핵심 개념 탐색 및 프로그래밍 기초C# .NET : 핵심 개념 탐색 및 프로그래밍 기초Apr 10, 2025 am 09:32 AM

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.

C# .NET 응용 프로그램 테스트 : 장치, 통합 및 엔드 투 엔드 테스트C# .NET 응용 프로그램 테스트 : 장치, 통합 및 엔드 투 엔드 테스트Apr 09, 2025 am 12:04 AM

C#.NET 애플리케이션에 대한 테스트 전략에는 단위 테스트, 통합 테스트 및 엔드 투 엔드 테스트가 포함됩니다. 1. 단위 테스트를 통해 MSTEST, NUNIT 또는 XUNIT 프레임 워크를 사용하여 코드의 최소 단위가 독립적으로 작동합니다. 2. 통합 테스트는 일반적으로 사용되는 시뮬레이션 된 데이터 및 외부 서비스를 결합한 여러 장치의 기능을 확인합니다. 3. 엔드 투 엔드 테스트는 사용자의 완전한 작동 프로세스를 시뮬레이션하며 셀레늄은 일반적으로 자동 테스트에 사용됩니다.

Advanced C# .NET 튜토리얼 : ACE 귀하의 다음 선임 개발자 인터뷰Advanced C# .NET 튜토리얼 : ACE 귀하의 다음 선임 개발자 인터뷰Apr 08, 2025 am 12:06 AM

C# 수석 개발자와의 인터뷰에는 비동기 프로그래밍, LINQ 및 .NET 프레임 워크의 내부 작업 원리와 같은 핵심 지식을 마스터하는 것이 필요합니다. 1. 비동기 프로그래밍은 비동기를 통해 작업을 단순화하고 응용 프로그램 응답 성을 향상시키기 위해 기다리고 있습니다. 2.linq는 SQL 스타일로 데이터를 운영하고 성능에주의를 기울입니다. 3. Net Framework의 CLR은 메모리를 관리하며 가비지 컬렉션은주의해서 사용해야합니다.

C# .NET 인터뷰 질문 및 답변 : 전문 지식 레벨 업C# .NET 인터뷰 질문 및 답변 : 전문 지식 레벨 업Apr 07, 2025 am 12:01 AM

C#.NET 인터뷰 질문 및 답변에는 기본 지식, 핵심 개념 및 고급 사용이 포함됩니다. 1) 기본 지식 : C#은 Microsoft가 개발 한 객체 지향 언어이며 주로 .NET 프레임 워크에 사용됩니다. 2) 핵심 개념 : 위임 및 이벤트는 동적 바인딩 방법을 허용하고 LINQ는 강력한 쿼리 기능을 제공합니다. 3) 고급 사용 : 비동기 프로그래밍은 응답 성을 향상시키고 표현 트리는 동적 코드 구성에 사용됩니다.

C# .NET을 사용하여 마이크로 서비스 구축 : 건축가를위한 실용 가이드C# .NET을 사용하여 마이크로 서비스 구축 : 건축가를위한 실용 가이드Apr 06, 2025 am 12:08 AM

C#.net은 강력한 생태계와 풍부한 지원으로 인해 마이크로 서비스를 구축하는 데 인기있는 선택입니다. 1) ASP.NETCORE를 사용하여 RESTFULAPI를 작성하여 주문 생성 및 쿼리를 처리하십시오. 2) GRPC를 사용하여 마이크로 서비스 간의 효율적인 통신을 달성하고 주문 서비스를 정의하고 구현하십시오. 3) Docker Containerized 마이크로 서비스를 통해 배포 및 관리를 단순화합니다.

C# .NET 보안 모범 사례 : 일반적인 취약점 방지C# .NET 보안 모범 사례 : 일반적인 취약점 방지Apr 05, 2025 am 12:01 AM

C# 및 .NET의 보안 모범 사례에는 입력 확인, 출력 인코딩, 예외 처리, 인증 및 인증이 포함됩니다. 1) 일반 표현식 또는 내장 방법을 사용하여 악성 데이터가 시스템에 들어가는 것을 방지하기 위해 입력을 확인하십시오. 2) XSS 공격을 방지하기 위해 출력 인코딩 httputility.htmlencode 메서드를 사용하십시오. 3) 예외 처리는 정보 유출을 피하고 오류를 기록하지만 자세한 정보를 사용자에게 반환하지는 않습니다. 4) ASP.NETIDENITY 및 CAMPLES 기반 승인을 사용하여 신청서를 무단 액세스로부터 보호합니다.

C 언어 : 무엇을 의미 하는가C 언어 : 무엇을 의미 하는가Apr 03, 2025 pm 07:24 PM

C 언어의 결장의 의미 ( ':') : 조건부 명세서 : 조건부 표현 및 명령문 분리 블록 루프 문 : 초기화, 조건부 및 증분 표현식 매크로 정의 분리 : 매크로 이름 및 매크로 값 단일 라인 주석 설명 : 콜론에서 라인으로의 내용을 주석 차원으로 표현

C 언어에서 무엇을 의미 하는가C 언어에서 무엇을 의미 하는가Apr 03, 2025 pm 07:21 PM

A In Canue in-Conecrease Operator이며 운영 메커니즘에는 다음이 포함됩니다. 먼저 변수 값을 얻습니다. a. A의 값을 1 x 1. 증가 후 A의 값을 반환합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경