ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <WEB Hacking> SOP
    WEB Hacking 2021. 12. 15. 16:55

    - 브라우저는 인증 정보로 사용될 수 있는 쿠키를 브라우저 내부에 보관하고, 이용자가 웹 서비스에 접속할 때 브라우저는 해당 웹 서비스에서 사용하는 인증 정보인 쿠키를 HTTP 요청에 포함시켜 전달함

    - 브라우저는 웹 리소스를 통해 간접적으로 타 사이트에 접근할 때에도 인증 정보인 쿠키를 함께 전송하는 특징을 가짐

    - 위 특징을 이용하면 악의적인 페이지가 클라이언트의 권한을 이용해 대상 사이트에 HTTP 요청을 보내고, HTTP 응답 정보를 획득하는 코드를 실행할 수 있음

     

    ■SOP(Same Origin Policy)

    - 브라우저의 보안 메커니즘

    - Origin : 프로토콜(Protocol), 포트(Port), 호스트(Host)로 구성(이 구성요소가 모두 일치해야 Origin이 동일)

    - Origin이 동일할 때만 정보를 읽을 수 있게 해 줌

    - 외부 출처에서 불러온 데이터를 읽으려고 할 때는 오류가 발생(데이터를 쓰는 것은 문제없이 동작)

    - 이미지나 JS, CSS 등의 리소스를 불러오는 <img>, <script>, <style> 등의 태그는 SOP의 영향을 받지 않음

     

    ■CORS(Cross Origin Resource Sharing)

    - 웹 서비스에서 SOP를 완화하여 다른 출처의 데이터를 처리해야 하는 경우 사용하는 방법

    - HTTP 헤더에 기반하여 Cross Origin 간에 리소스를 공유하는 방법

    - 보내는 측에서 CORS 헤더를 설정해 요청하면, 수신 측에서는 헤더를 구분해 정해진 규칙에 맞게 데이터를 가져갈 수 있음

    - 일반적인 요청에 대해서는 아무런 처리도 하지 않음

      · GET, POST, HEAD

      · Request Header는 Accept, Accept-Language, Content-Language, Content-Type만 허용

      · Content-Type은 application/x-www-form-urlencoded, multipart/form-data, text/plain만 허용

    - 일반적인 요청이 아닌 경우 브라우저는 접근할 리소스를 가진 서버에 preflighted 요청을 보냄

      · preflighted 요청은 특별한 목적을 가지는 요청으로 method = OPTIONS로 전송

      · OPTIONS 요청을 받은 서버는 Response Header에 서버가 허용할 옵션을 설정하여 브라우저에게 전달

      · 브라우저는 서버가 보낸 Response 정보를 참고해 허용되지 않은 요청인 경우 405 Method Not Allowed 에러를

         발생시키고, 실제 페이지의 요청은 서버로 전송하지 않음

      · 허용된 요청인 경우에는 전송

     

    Header 설명
    Access-Control-Allow-Origin 헤더 값에 해당하는 Origin에 들어오는 요청만 처리
    Access-Control-Allow-Methods 헤더 값에 해당하는 메소드의 요청만 처리
    Access-Control-Allow-Credentials 쿠키 사용 여부를 판단
    Access-Control-Allow-Headers 헤더 값에 해당하는 헤더의 사용 가능 여부를 나타냄

    - 즉, 브라우저는 발신 측이 보낸 요청과 수신 측이 보낸 응답을 확인하여 상응할 때만, POST 요청을 보내 수신 측의 웹 리소스를 요청하는 HTTP 요청을 보냄

     

    ■JSON with Padding(JSONP)

    - 이미지나 JS, CSS 등의 리소스는 SOP에 구애 받지 않고 외부 출처에 대한 접근을 허용하는 특징을 이용해 <script> 태그로 Cross Origin의 데이터를 불러옴(<script> 태그 내에서는 데이터를 JS 코드로 인식하기 때문에 Callback 함수 사용)

    - Cross Origin에 요청할 때 callback 파라미터에 어떤 함수로 받아오는 데이터를 핸들링할지 넘겨주면, 대상 서버는 전달된 Callback으로 데이터를 감싸 응답함

    - 현재는 거의 사용하지 않는 추세(CORS 권장)

    'WEB Hacking' 카테고리의 다른 글

    <WEB Hacking> ClientSide: CSRF  (0) 2021.12.17
    <WEB Hacking> ClientSide: XSS  (0) 2021.12.16
    <WEB Hacking> Session  (0) 2021.12.14
    <WEB Hacking> Cookie  (0) 2021.12.14
    <WEB Hacking> Browser DevTools  (0) 2021.12.14
Designed by Tistory.