CloudFront에서 쿠키 처리 정보

4129 단어 쿠키CloudFrontAWS

문서


  • htp // // cs. 아 ws. 아마존. 코 m / 그럼 _ jp / 아마 존 C ぉ dF 롱 t / ㅁ st / ゔ ぇ ぺ ぺ ぐ い / 코오 키에 s. HTML

  • 기본



    기본적으로 CloudFront는 쿠키를 고려하지 않습니다.

    요청의 Cookie: 헤더는 오리진으로 전달되지 않습니다.
    응답의 Set-Cookie: 헤더는 뷰어에 전송되지 않는다.

    설정



    비헤이비어에서 다음 중 하나를 선택할 수 있습니다.
  • None (기본값)
  • Whitelist
  • All



  • 이 설정은 다음 세 가지 동작에 영향을 미칩니다.
  • 오리진에 Cookie:를 전송할지 여부
  • 캐시 키에 Cookie:를 사용할지 여부
  • 오리진이 반환 한 Set-Cookie:를 뷰어로 전송할지 여부

  • 문서를 읽어도 지금 정확히 몰랐기 때문에 실제로 설정하여 거동을 확인했다.


    Cookie:를 오리진으로 전송
    캐시 키에 Cookie:Set-Cookie:를 뷰어로


    None
    하지 않는다
    사용하지 않음
    반환하지 않음

    Whitelist
    부분하다
    일부 사용
    모두 반환

    모두
    모두하다
    모두 사용
    모두 반환


    기본적으로 상상대로인데, Whitelist의 Set-Cookie의 취급만 예외적이며, 화이트리스트에 관계없이 모든 쿠키를 뷰어에 돌려준다.

    그래서 Whitelist로 제한하고 싶어도, 예를 들어 세션 ID가 캐시로 전달되어 버리는 것에 주의가 필요. 어떤 경우에는 매우 위험한 상태가 될 수 있습니다.

    문서은 다음과 같이 쓰여져 있다.

    화이트리스트에 없는 쿠키가 오리진의 응답에 포함되어 있으면 CloudFront는 쿠키도 뷰어에 반환합니다.

    한편, 이하의 설명도 있어, 모순되고 있는 것처럼 보이지만,

    오리진이 화이트리스트에 등록된 쿠키와 등록되지 않은 쿠키를 모두 반환하면 CloudFront는 화이트리스트에 등록된 쿠키만 캐시합니다.

    이것은 Cookie:를 캐시의 키에 사용할지 어떨지의 이야기가 섞여 있는 것이 아닐까 생각한다.

    자신이 시도한 한 CloudFront는 Set-Cookie: 헤더를 캐시합니다. X-Cache: Hit from cloudfront 응답에 화이트리스트에 있는지 여부에 관계없이 Set-Cookie: 헤더가 설정됩니다.

    이 문서 에도,

    Set-Cookie – 쿠키를 전달하도록 CloudFront를 구성한 경우 Set-Cookie 헤더 필드가 클라이언트로 전달됩니다.

    그리고 화이트리스트로 제한된다고는 적혀 있지 않다.

    실험



    이하 x_* 를 화이트리스트로 설정한 비헤이비어의 응답.
    $ curl -b 'x_1=1; a=1' -vvv 'https://...'
    
    < HTTP/1.1 200 OK
    < Content-Type: text/html
    < Content-Length: 52
    < Connection: keep-alive
    < Date: Wed, 05 Jul 2017 07:35:49 GMT
    < Server: nginx
    < Set-Cookie: a=5; path=/
    < Set-Cookie: b=6; path=/
    < Age: 30
    < X-Cache: Hit from cloudfront
    < Via: 1.1 xxxxxxxxxxxxxxxx.cloudfront.net (CloudFront)
    < X-Amz-Cf-Id: xxxxxxxxxxxxxxxxx
    
    1499240149 array(1) {
      ["x_1"]=>
      string(1) "1"
    }
    

    뷰어는 x_1a 의 2 개의 쿠키를 송신하고 있어 오리진에는 x_1 만이 도착하고 있다.

    오리진은 화이트리스트에 포함되지 않은 ab의 두 쿠키를 반환하고 X-Cache: Hit from cloudfront의 응답에 Set-Cookie가 포함되어 있습니다.

    오리진에 넣은 PHP 소스.
    <?php
    setcookie('a', '5', 0, '/');
    setcookie('b', '6', 0, '/');
    
    echo time();
    echo ' ';
    var_dump($_COOKIE);
    

    좋은 웹페이지 즐겨찾기