firefox 동일 출처 정책 비활성화


110

Firefox의 동일한 출처 정책을 해제해야하는 지역 조사 도구를 개발 중입니다 (스크립트 액세스 측면에서 저는 교차 도메인 요청에 대해 신경 쓰지 않습니다).

특히 호스트 도메인의 스크립트가 도메인에 관계없이 페이지에 포함 된 모든 iframe의 임의 요소에 액세스 할 수 있기를 바랍니다.

CORS FF 확장에 대해 언급 한 이전 Q & A를 알고 있지만 CORS 만 허용하고 스크립트 액세스는 허용하지 않기 때문에 필요하지 않습니다.

쉽게 수행 할 수 없다면 SOP를 비활성화하도록 수정할 수있는 FF src 코드의 특정 부분을 알려주는 통찰력을 통해 FF를 다시 컴파일 할 수 있습니다.


4
개발자들에게는 흥미로운 일이 될 것입니다. 동일한 출처 정책은 개발자가 아닌 사용자의 보안을 위해 설계되었으므로 지정된 사이트 의 스크립트 가 제한을 통과 할 수 있도록 허용해야합니다 . 그러나 개발자도 사람이므로 개인 정보도 잃을 수 있습니다.
Danubian Sailor

1
지금은 불가능하다고 생각합니다. 여기 Firefox Bugzilla의 관련 버그 보고서가 있습니다. bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky

만 좋은 해결책이 도메인을 기반으로 플러그인에 의해 헤더를 주입하는 것입니다 stackoverflow.com/a/44093160/956397은 다른 모든게 것은 불안은 ...입니다
PiTheNumber

답변:


82

2015 년 3 월 5 일에 출시 된 최신 Firefox ( 빌드 36.0.1 ) 에서 작동하는 모든 HTTP 응답에 CORS 헤더를 추가하는 Firefox 확장 기능이 있습니다. 나는 그것을 테스트했고 Windows 7과 Mavericks 모두에서 작동하고 있습니다. 작동하도록 단계를 안내해 드리겠습니다.

1) 확장 받기

여기 (작성자 빌드) 또는 여기 (미러, 업데이트되지 않을 수 있음 ) 에서 xpi를 다운로드 할 수 있습니다 .

또는 GitHub 에서 파일 을 다운로드하십시오 . 이제 Firefox Marketplace에도 있습니다 . 여기에서 다운로드하세요 . 이 경우 설치를 클릭하면 애드온이 설치되며 4 단계로 건너 뛸 수 있습니다.

xpi를 다운로드 한 경우 3 단계로 이동할 수 있습니다. GitHub에서 zip을 다운로드 한 경우 2 단계로 이동합니다.

2) xpi 빌드

압축을 풀고 "cors-everywhere-firefox-addon-master"폴더로 들어가 모든 항목을 선택하고 압축해야합니다. 그런 다음 생성 된 zip의 이름을 * .xpi로 바꿉니다.

참고 : OS X GUI를 사용하는 경우 일부 숨겨진 파일이 생성 될 수 있으므로 명령 줄을 사용하는 것이 좋습니다.

3) xpi 설치

xpi를 Firefox로 드래그 앤 드롭하거나 "about : addons"로 이동하여 오른쪽 상단 모서리에있는 톱니 바퀴를 클릭하고 "파일에서 추가 기능 설치"를 선택한 다음 .xpi 파일을 선택할 수 있습니다. 이제 firefox를 다시 시작하십시오.

4) 작동시키기

이제 확장 프로그램은 기본적으로 작동하지 않습니다. 확장 아이콘을 확장 표시 줄로 끌어 야하지만 걱정하지 마십시오. 사진이 있습니다!

  • Firefox 메뉴를 클릭하십시오
  • 사용자 정의를 클릭하십시오.

p1

  • CorsE를 막대로 드래그
  • 이제 아이콘을 클릭하십시오. 녹색이면 모든 HTTP 응답에 CORS 헤더가 추가됩니다.

p2

5) 작동하는지 테스트

jQuery

$.get( "http://example.com/", function( data ) {
  console.log (data);
});

자바 스크립트

xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
        console.log(xmlhttp.responseText);
    }
}

xmlhttp.open("GET","http://example.com/");
xmlhttp.send();

6) 최종 고려 사항

그 주 HTTPS HTTP에 허용되지 않습니다 .

해결 방법이있을 수 있지만 문제의 범위 뒤에 있습니다.


1
당신 비활성화 HTTP / HTTPS 설정하여 혼합 콘텐츠 보호 수 security.mixed_content.block_active_content거짓security.mixed_content.block_display_content사실을 . 일부 보안을 비활성화하고 있으며 이는 일시적인 해결 방법이어야합니다.
bufh 2015-06-05

4
이 애드온의 작성자로서 저는 실제로이 특정 질문을 해결할 것이라고 확신하지 않습니다. 그래도 멘션을 얻는 것이 좋습니다.
spenibus

2
@spenibus - 당신은 당신의 추가를 얻어야한다 서명 - - 내가 :( 설치할 수 없습니다 support.mozilla.org/en-US/kb/...
피터 Ajtai

3
@PeterAjtai Mozilla는 나를 괴롭히기 위해 열심히 노력하고 있습니다. 검토 대기 중 : addons.mozilla.org/en-US/firefox/addon/cors-everywhere 자동으로 서명되어야합니다.
spenibus

1
about : config 에서 addon을 설치하려면 xpinstall.signatures.requiredfalse 로 설정 합니다. 그것은 나를 위해 일했습니다.
user2345998

43
about:config -> security.fileuri.strict_origin_policy -> false

21
@Niklas에게 감사드립니다. 그러나 이것은 아마도 로컬 웹 개발 테스트에 사용되는 fileuri 동일한 출처 정책 검사 만 비활성화한다고 생각합니다. 내가 노력하고있을 때 아직 도메인 A의 JavaScript에서 도메인 B와 iframe에 액세스 DOM 노드에 저를 중지
Yuchen 저우

127
이것은 아무것도하지 않습니다
vknyvz

2
내 firefox (개발자) 버전 : 40에서 작동하는지 확인했습니다. @Niklas 팁에 감사드립니다.
bufh 2015-06-05

11
이것은 특히 디버깅을위한 설정이며 다른 로컬 파일에 대한 로컬 파일 액세스를 제어합니다 (true로 설정하면 로컬 파일은 동일한 폴더 또는 하위 폴더의 로컬 파일에만 액세스 할 수 있고 false로 설정하면 로컬 파일은 모든 로컬 파일에 액세스 할 수 있음). . 출처
Jon Egerton 2015 년

5
그것은 않는 일을, 내 경우에는이를 통해 제공되는 문서에서 액세스 로컬 리소스 날 수 있습니다 file://프로토콜입니다. 컴퓨터 과학자들은 "무엇이든"이라는 단어에 더 많은 비중을 두어야합니다. 모든 것을 테스트하지 않았다면 (당신이하지 않은), 당신의 발언에 좀 더 보수적으로 노력하십시오. "쓸모없는"이라는 단어의 사용도 마찬가지입니다.
AMN

12

나는 FF의 동일한 출처 정책을 구체적으로 비활성화하는 방법을 지정하지 않았기 때문에 내 이전 답변이 반대 투표임을 깨달았습니다. 여기에 더 자세한 답변을 드릴 것입니다.

경고 : 이렇게하려면 FF를 다시 컴파일해야하며 새로 컴파일 된 Firefox 버전은 SOP를 다시 활성화 할 수 없습니다 .

Mozilla의 Firefox 소스 코드를 확인하고 src 디렉토리에서 nsScriptSecurityManager.cpp를 찾습니다. 여기에 나열된 것을 예로 사용하겠습니다. http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

함수 구현 nsScriptSecurityManager :: CheckSameOriginURI로 이동합니다. 이는 2016 년 3 월 2 일 현재 568 행입니다.

해당 함수가 항상 NS_OK를 반환하도록합니다.

이것은 영원히 SOP를 비활성화합니다.

@Giacomo의 브라우저 애드온 답변은 대부분의 사람들에게 유용해야하며 그 답변을 수락했지만 개인적인 연구 요구 사항 (TL; 여기서 설명하지 않음)으로는 충분하지 않으며 다른 연구원이 무엇을해야할지 생각합니다. 나는 SOP를 완전히 죽이기 위해 여기에 있었다.


오늘 현재 499 행, Git 미러 : github.com/mozilla/gecko-dev/blob/…
kamranicus


3

2016 년 9 월 현재이 애드온은 CORS 를 비활성화하는 가장 좋은 방법입니다 : https://github.com/fredericlb/Force-CORS/releases

옵션 패널에서 삽입 할 헤더와 특정 웹 사이트를 자동으로 활성화하도록 구성 할 수 있습니다.

여기에 이미지 설명 입력


1
에서 wiki.mozilla.org/Add-ons/Extension_Signing : 파이어 폭스 48 : 해제 및 데스크탑을위한 파이어 폭스의 베타 버전은 더 무시로, 부호 확장을 설치할 수 없습니다. 이 애드온의 서명 된 버전을 찾을 수 없습니다.
FelixM

1
@FelixM 방법은 다음과 같습니다. ghacks.net/2016/08/14/…
Khado Mikhal

@FelixM Firefox Developer Edition에는 "about : config"플래그에 "xpinstall.signatures.required"부울 옵션이 있습니다. 그러나이 확장의 버전 0.1.1은 Firefox Developer Edition 58.0 (Quantum)과 호환되지 않습니다.
alxndr


1

에서 about:config추가 content.cors.disable(빈 문자열).


1
이것은 테스트 되었습니까? 내가 읽고있는 내용에서이 환경 설정은로 설정 될 때 모든 CORS 요청이 실패하도록 설계 true되었지만 false다른 값에 대해서는 언급하지 않습니다 . "Firefox에서 CORS를 비활성화하는 기본 설정은 content.cors.disable입니다.이 값을 true로 설정하면 CORS가 비활성화되므로이 경우 CORS 요청은 항상이 오류와 함께 실패합니다." developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/…
stealththeninja

Firefox 68.7부터는이 설정도 사용할 수 없습니다.
Gunnar Bernstein
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.