도메인 간 양식 게시
이 주제에 대한 기사와 게시물을 모두 보았습니다 (SO 포함). 주석 의견은 동일한 출처 정책으로 인해 도메인 전체에서 POST 형식을 막을 수 있다는 것입니다. 내가 본 사람이 같은 출처 정책이 게시물 게시에 적용되지 않는다고 제안하는 유일한 장소 는 여기 입니다.
더 "공식적인"또는 공식적인 출처로부터 답변을 받고 싶습니다. 예를 들어, 동일한 출처가 양식 POST에 미치는 영향을 다루는 RFC를 아는 사람이 있습니까?
설명 : GET 또는 POST를 구성하여 어떤 도메인으로 보낼 수 있는지 묻지 않습니다. 나는 물어보고있어:
- Chrome, IE 또는 Firefox에서 도메인 'Y'의 콘텐츠가 도메인 'X'에 POST를 보내도록 허용하는 경우
- POST를 수신하는 서버가 실제로 모든 양식 값을 볼 수 있습니다. 나는 대부분의 온라인 토론 기록 테스터가 서버가 게시물을 받았다고 말했지만 양식 값이 모두 비어 있거나 제거 되었기 때문에 이것을 말합니다.
- 어떤 공식 문서 (예 : RFC)에는 브라우저가 현재 구현 한 내용에 관계없이 예상되는 동작이 무엇인지 설명되어 있습니다.
또한, 동일 출처가 양식 POST에 영향을 미치지 않으면 위조 방지 토큰이 필요한 이유가 다소 분명해집니다. 공격자가 단순히 위조 방지 토큰을 포함하는 양식을 검색하기 위해 HTTP GET을 발행 한 다음 동일한 토큰을 포함하는 불법 POST를 만들 수 있다고 생각하기가 쉽지 않기 때문에 "어떤"것입니다. 코멘트?
동일한 오리진 정책이 브라우저 측 프로그래밍 언어에만 적용됩니다. 따라서 JavaScript를 사용하여 원본 서버가 아닌 다른 서버에 게시하려고하면 동일한 원본 정책이 작동하지만 양식에서 직접 게시하면 작업이 다음과 같은 다른 서버를 가리 킵니다.
<form action="http://someotherserver.com">
양식 게시와 관련된 자바 스크립트가없는 경우 동일한 원본 정책을 적용 할 수 없습니다.
자세한 내용은 Wikipedia 를 참조하십시오.
임의의 GET 또는 POST 요청 을 작성하여 대상 브라우저가 액세스 할 수 있는 서버로 전송할 수 있습니다. 여기에는 프린터 및 라우터와 같은 로컬 네트워크의 장치가 포함됩니다.
CSRF 익스플로잇을 구축하는 방법에는 여러 가지가 있습니다. 방법을 사용하여 간단한 POST 기반 CSRF 공격 을 보낼 수 있습니다 .submit()
. 사이트 간 파일 업로드 CSRF 공격 과 같은보다 복잡한 공격 은 CORS의 xhr.withCredentals 동작 사용을 악용 합니다.
SOP는 클라이언트 요청에 대한 서버의 응답을 읽는 JavaScript와 관련되므로 CSRF는 JavaScrip에 대한 동일 원본 정책을 위반하지 않습니다 . CSRF 공격은 응답에 신경 쓰지 않으며, 부작용 이나 관리 요청자 추가 또는 서버에서 임의의 코드 실행과 같은 요청에 의해 생성 된 상태 변경에 신경을 씁니다 .
OWASP CSRF Prevention Cheat Sheet에 설명 된 방법 중 하나를 사용하여 요청을 보호하십시오 . CSRF에 대한 자세한 내용은 CSRF의 OWASP 페이지를 참조하십시오 .
동일한 출처 정책은 다른 URL (다른 프로토콜 또는 도메인 또는 포트)로 요청을 보내는 것과는 아무런 관련이 없습니다.
다른 URL의 응답 데이터에 대한 액세스를 제한하는 것입니다. 따라서 페이지 내의 JavaScript 코드는 임의의 도메인에 게시하거나 해당 페이지 내의 양식을 다른 위치에 제출할 수 있습니다 (양식이 URL이 다른 iframe에있는 경우 제외).
그러나 POST 요청을 비효율적으로 만드는 것은 이러한 요청에 위조 방지 토큰이 없기 때문에 다른 URL에서는 무시한다는 것입니다. 또한 JavaScript가 해당 URL을 AJAX 요청을 희생자 URL로 보내 보안 토큰을 얻으려고하면 동일한 출처 정책으로 해당 데이터에 액세스 할 수 없습니다.
좋은 예 : 여기
그리고 Mozilla의 훌륭한 문서 : here
참고 URL : https://stackoverflow.com/questions/11423682/cross-domain-form-posting
'development' 카테고리의 다른 글
대소 문자를 구분하지 않는 'in'-Python (0) | 2020.06.27 |
---|---|
Chrome과 IE가 서버로 보내는 User-Agent에“Mozilla 5.0”을 넣는 이유는 무엇입니까? (0) | 2020.06.27 |
git에서 풀-풀 병합 커밋 메시지를 요구하는 이유는 무엇입니까? (0) | 2020.06.27 |
Java에서 권장되는 Clone () vs Copy 생성자-[duplicate] (0) | 2020.06.27 |
JSON이 세트를 직렬화하는 방법은 무엇입니까? (0) | 2020.06.27 |