JavaScript 의 원본 정책

원본 정책 은 원본 (origin) 에서 텍스트 나 스 크 립 트 를 불 러 오 거나 다른 원본 (origin) 에서 자원 과 의 상호작용 방식 을 제한 합 니 다.
동원 정의
두 페이지 가 같은 프로 토 콜 (protocol), 포트 (지정 하면), 호스트 를 가지 고 있다 면 이 두 페이지 는 같은 원본 (origin) 에 속 합 니 다.
아래 표 는 상대 적 인 것 을 보 여 주 었 다.http://store.company.com/dir/page.html 원본 검사 의 예제:
URL
결실
원인.
http://store.company.com/dir2/other.html
성공 하 다.
http://store.company.com/dir/inner/another.html
성공 하 다.
https://store.company.com/secure.html
실패 하 다.
협의 가 다르다
http://store.company.com:81/dir/etc.html
실패 하 다.
포트 가 다르다
http://news.company.com/dir/other.html
실패 하 다.
호스트 이름 이 다 름
파일: URL 의 origin 정의 참조.
원천 상속about:blank, javascript:, data:URLs 에서 온 내용 은 불 러 온 문서 가 지정 한 원본 을 계승 합 니 다. URL 자체 가 자신의 원본 에 대한 정 보 를 지정 하지 않 았 기 때 문 입 니 다.
IE 특례
동원 전략 을 처리 하 는 문제 에 있어 IE 는 두 가지 주요 한 차이 점 이 존재 한다.
  • 수신 범위 (Trust Zones): 서로 고도 로 신뢰 하 는 도 메 인 이름, 예 를 들 어 회사 도 메 인 이름 (corporate domains) 은 같은 소스 정책 의 제한 을 지 키 지 않 습 니 다.
  • 포트: IE 는 포트 번 호 를 같은 소스 정책 의 구성 부분 에 넣 지 않 았 기 때문에http://company.com:81/index.html 화해시키다http://company.com/index.html 동원 에 속 하고 어떠한 제한 도 받 지 않 는 다.

  • 이러한 예 외 는 비표 준 적 이 며, 다른 브 라 우 저 들 도 지원 하지 않 지만, 윈도 우즈 RT IE 기반 응용 프로그램 개발 에 도움 이 될 것 이다.
    변경 소스
    페이지 는 원본 을 바 꿀 수 있 지만 제한 을 받 을 수 있 습 니 다.스 크 립 트 는 document. domain 의 값 을 현재 필드 의 접미사 로 설정 할 수 있 습 니 다.
    같은 소스 정책 에 예외 가 있 습 니 다. 스 크 립 트 는 document. domain 의 값 을 현재 도 메 인의 접미사 로 설정 할 수 있 습 니 다. 이렇게 하면 짧 은 도 메 인 은 후속 동원 검 측 근거 가 됩 니 다.가령http://store.company.com/dir/other.html 스 크 립 트 중 하나 가 다음 문 구 를 실 행 했 습 니 다:
    document.domain = "company.com";

    이 문 구 를 실행 하면 페이지 는 성공 적 으로 쌍 을 통과 할 것 이다.http://company.com/dir/page.html 의 동원 검사.마찬가지 로 copany. com 은 document. domain 을 othercopany. com 으로 설정 할 수 없습니다.
    브 라 우 저 는 포트 번 호 를 따로 저장 합 니 다.모든 할당 작업 은 document.domain = document.domain 을 포함 하여 원래 포트 번 호 를 null 값 으로 덮어 씁 니 다.따라서 company. com: 8080 페이지 의 스 크 립 트 는 설정 document.domain = "company.com" 만으로 company. com 과 통신 할 수 없습니다.값 을 할당 할 때 포트 번호 가 null 이 되 지 않도록 포트 번 호 를 가 져 가 야 합 니 다.
    첨부: document. domain 을 사용 하여 하위 도 메 인 을 부모 도 메 인 에 접근 하 게 하 는 것 이 안전 합 니 다. 하위 도 메 인과 부모 도 메 인의 document. domain 을 같은 값 으로 설정 해 야 합 니 다.부모 도 메 인 을 원래 값 으로 간단하게 설정 하 더 라 도 이렇게 해 야 합 니 다.이렇게 하지 않 으 면 권한 수여 오류 가 발생 할 수 있 습 니 다.
    크로스 도 메 인 네트워크 접근
    같은 소스 정책 은 서로 다른 소스 간 의 상호작용 을 제어 합 니 다. 예 를 들 어 XML HttpRequest 나 탭 을 사용 할 때 같은 소스 정책 의 제약 을 받 습 니 다.상호작용 은 보통 세 가지 로 나 뉜 다.
  • 보통 크로스 오 버 쓰기 작업 (Cross - origin writes) 을 허용 합 니 다.예 를 들 어 링크 (links), 방향 변경 및 폼 제출.특정 소수의 HTTP 요청 에 preflight 를 추가 해 야 합 니 다.
  • 보통 크로스 필드 자원 삽입 (Cross - origin embedding) 을 허용 합 니 다.그 다음 에 예 를 들 어 설명 하 겠 습 니 다.
  • 도 메 인 읽 기 동작 (Cross - origin reads) 을 허용 하지 않 습 니 다.하지만 내 장 된 자원 을 통 해 교묘 하 게 읽 기 접근 을 할 수 있다.예 를 들 어 포 함 된 그림 의 높이 와 너 비 를 읽 고 내 장 된 스 크 립 트 를 호출 하 는 방법 이나 availability of an embedded resource 를 사용 할 수 있 습 니 다.
  • 다음은 도 메 인 을 뛰 어 넘 을 수 있 는 자원 예제 입 니 다.
  • 탭 에 크로스 스 크 립 트 를 삽입 합 니 다.문법 오류 정 보 는 원본 스 크 립 트 에서 만 잡 을 수 있 습 니 다. < /p>
  • < p > < link rel = "stylesheet" href = "..." / > 탭 에 CSS 를 삽입 합 니 다.CSS 의 느슨 한 문법 규칙 으로 인해 CSS 의 크로스 도 메 인 은 정확 한 Content - Type 메시지 헤드 를 설정 해 야 합 니 다.브 라 우 저 마다 제한 이 있 습 니 다: IE, Firefox, Chrome, Safari (CVE - 2010 - 0051 로 이동) 부분 과 Opera. < /p>
  • < p > 에 그림 을 삽입 합 니 다.지원 하 는 그림 형식 은 PNG, JPEG, GIF, BMP, SVG,... < / p >
  • 을 포함 합 니 다.
  • < p > < video > 와 < audio > 는 멀티미디어 자원 을 삽입 합 니 다. < /audio>

  • < p > < object >, < embed > 와 < applet > 의 플러그 인 입 니 다. < /applet>

  • < p > @ font - face 가 도입 한 글꼴 입 니 다.일부 브 라 우 저 는 도 메 인 글꼴 (cross - origin fonts) 을 허용 합 니 다. 일부 원본 글꼴 (same - origin fonts) 이 필요 합 니 다. < /p>
  • < p > < frame / > 와 < iframe > 가 불 러 온 모든 자원.사이트 에 서 는 X - Frame - Options 메시지 헤드 를 사용 하여 이러한 형식의 크로스 도 메 인 상호작용 을 막 을 수 있 습 니 다. < /iframe>



  • < h3 > 크로스 도 메 인 접근 실현 < / h3 >
    < p > 크로스 도 메 인 접근 을 위해 CORS 를 사용 합 니 다. < /p>
    < h3 > 도 메 인 접근 차단 < / h3 >
    • < p > 는 크로스 - 사이트 Request Forgery (CSRF token) 라 고 불 리 는 크로스 - 사이트 Request Forgery (CSRF) 태그 만 감지 하면 됩 니 다.이 표 시 를 사용 하여 페이지 의 크로스 오 버 읽 기 동작 을 막 아야 합 니 다. < /p>
    • < p > 자원 의 크로스 오 버 읽 기 를 막 으 려 면 이 자원 이 삽입 되 지 않도록 해 야 합 니 다.끼 워 넣 는 행 위 를 막 는 것 은 필수 입 니 다. 끼 워 넣 는 자원 이 보통 정 보 를 노출 하기 때 문 입 니 다. < /p>
    • < p > 크로스 오 버 사이트 의 끼 워 넣 기 를 막 습 니 다. 위 에 열거 한 끼 워 넣 을 수 있 는 자원 형식 이 아 닌 지 확인 하 십시오.대부분의 경우 브 라 우 저 는 Content - Type 메시지 헤드 를 준수 하지 않 습 니 다.예 를 들 어, < script > 탭 에 HTML 문 서 를 삽입 하면 브 라 우 저 는 HTML 을 자바 script 으로 해석 합 니 다. When your resource is not an entry point to your site, you can also use a CSRF token to prevent embedding. & lt; /p></li>
      </ul>
      <h2>크로스 스 크 립 트 API 접근 & lt; /h2>
      <p>Javascript 의 API 에 서 는 iframe. contentWindow, window. parent, window. open 과 window. opener 등 문서 간 에 직접 참조 할 수 있 습 니 다.두 문서 의 원본 이 같 지 않 으 면 이 인용 방식 은 Window 와 Location 대상 의 접근 에 제한 을 추가 합 니 다.windows. postmessage 를 대체 방안 으로 사용 하여 도 메 인 문서 간 의 통신 을 제공 할 수 있 습 니 다.lt;/p>
      <h2>크로스 필드 데이터 저장 접근 & lt; /h2>
      <p>localstorage 와 IndexedDB 와 같은 브 라 우 저 에 저 장 된 데 이 터 를 원본 으로 분할 합 니 다.모든 원본 은 자신 만 의 저장 공간 을 가지 고 있 습 니 다. 원본 에 있 는 자바 script 스 크 립 트 는 다른 원본 에 속 하 는 데 이 터 를 읽 고 쓸 수 없습니다.lt;/p>
      <p>window. name 속성 은 다가 올 때 데 이 터 를 저장 할 수 있 고 도 메 인 을 넘 어 접근 할 수 있 습 니 다.lt;/p>
      <p>Cookies 는 서로 다른 소스 정의 방식 을 사용 합 니 다.한 페이지 는 이 필드 와 모든 부모 필드 에 쿠키 를 설정 할 수 있 습 니 다. 부모 필드 가 공공 접미사 (Public suffix) 가 아니라면 됩 니 다.Firefox 와 Chrome 은 Public Suffix List 를 사용 하여 도 메 인 이 공공 접미사 (Public suffix) 인지 여 부 를 결정 합 니 다.어떤 프로 토 콜 (HTTP / HTTPS) 이나 포트 번 호 를 사용 하 든 브 라 우 저 는 주어진 도 메 인 및 하위 도 메 인 이름 (sub - domains) 을 사용 하여 쿠키 에 접근 할 수 있 습 니 다.쿠키 를 설정 할 때 도 메 인, Path, Secure, Http - Only 표 시 를 사용 하여 접근 성 을 제한 할 수 있 습 니 다.쿠키 를 읽 을 때 출처 를 알 수 없습니다.안전 한 https 연결 을 사용 하 더 라 도 보 이 는 모든 쿠키 는 안전 하지 않 은 연결 설정 을 사용 합 니 다.lt;/p>
      </div>
      </div>
      </div>
      </div>
      <!--PC 와 WAP 자체 적응 버 전 -- & lt;
      <div id="SOHUCS" sid="1176901492741844992"></div>
      <script type="text/javascript" src="/views/front/js/chanyan.js">

    좋은 웹페이지 즐겨찾기