문제

나에게 말했지 사용자 정보를 누출,만"no-cache"응답에서는 충분하지 않습니다."아니오-스토어"는 또한 필요하다.

Cache-Control: no-cache, no-store

을 읽은 후에 이 사양 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html, 난 여전히 매우겠습니다.

현재의 이해는 그냥을 위한 중간 캐시 서버입니다.는 경우에도"no-cache"은 이에 대응 중간 캐시 서버를 저장할 수 있습 콘텐츠를 비휘발성 저장합니다.중간 캐시 서버는지 여부를 결정을 사용하여 저장된 콘텐츠에 대한 다음과 같은 요청을 합니다.그러나면"아니오-스토어는"응답에서 중간 캐시 끊이지 않는 가정을 저장하는 내용입니다.그래서,그것은 안전합니다.

은 거기에 다른 어떤 이유는 우리가 모두 필요합 no-cache 와"no-store"?

도움이 되었습니까?

해결책

나는 것을 명확히 no-cache 을 의미하지 않는 하지 않는 캐시.사실,그것의 의미는"다시 확인과"서버 사용하기 전에 임시가 자신이 캐쉬한 응답을 수 있는,모든 요청을 합니다.

must-revalidate, 에,다른 한편으로는,필요시 유효성을 검사할 때 자원을 고려인입니다.

는 경우 서버는 자원은 아직도 유효한 그 캐시 대응할 수 있으로 표현,따라서 완화하기 위해 필요 서버를 다시 보내기 전체 리소스입니다.

no-store 이 효과적으로 전체 하지 않는 캐시 지시어와입을 방지하기 위한 용도의 저장을 표현의 형태에서는 캐쉬 지지 않습니다.

나는 무엇이든지 말고 있으나 이 RFC2616HTTP spec:

역사를 버퍼에 저장할 수 있습니다 같은 응답의 일부로 그들의 정상적인 작업

그러나 이것은 ommitted 에서 새로운 RFC7234HTTP 사양에 잠재적으로도 확인 no-store 강한 참조하십시오:

http://tools.ietf.org/html/rfc7234#section-5.2.1.5

다른 팁

특정 상황에서,IE6 전 경우에도 캐쉬 파일 Cache-Control: no-cache 에서 그대로 응답 헤더로 보낸다.

W3C 국의 no-cache:

는 경우에 no-cache 지시어지 않습 지정 필드에 이름을,그 다음 캐시 을 사용하지 않아야 응답을 만족 이후 요청이 성공하지 revalidation 으로 원래 서버입니다.

내 응용 프로그램에서,당신이 많이 방문한 페이지 no-cache 헤더,다음 로그아웃 및 귀하의 브라우저에서,IE6 여전히 잡아 페이지가 캐시에서(없이 새로운/유효성 검증 요청을 서버).에 추가 no-store 헤더를 중지 그것이 그렇게 함.하지만 경우에 당신은 W3C 에서 자신의 단어가 있었다는 사실을 방법은 없을 이 동작을 제어:

역사를 버퍼에 저장할 수 있습니다 같은 응답의 일부로 그들의 정상적으로 작동합니다.

일반 사이의 차이는 브라우저의 역사와 정상적인 HTTP 캐싱하는 설명 특정 하위 섹션의 spec.

로부터 HTTP 1.1 사양:

없음 스토어:

의 목적 없음 스토어 지침은 민감한 정보 (예 : 백업 테이프에서)의 부주의 한 릴리스 또는 유지를 방지하는 것입니다. 무게 지침은 전체 메시지에 적용되며 응답 또는 요청으로 전송 될 수 있습니다. 요청으로 전송 된 경우 캐시는이 요청의 일부 또는 응답의 일부를 저장해서는 안됩니다. 응답으로 전송 된 경우 캐시는이 응답의 일부 또는이 응답 요청의 일부를 저장해서는 안됩니다. 이 지침은 비 공유 및 공유 캐시 모두에 적용됩니다. 이 맥락에서 "저장하지 말아야 할 것"이라는 것은 캐시가 의도적으로 정보를 비 휘발성 저장소에 저장해서는 안되며, 전달 후 가능한 한 휘발성 저장소에서 정보를 제거하려는 최상의 효과를 얻어야한다는 것을 의미합니다. 이 지침이 응답과 관련이 있더라도 사용자는 캐싱 시스템 외부에 이러한 응답을 명시 적으로 저장할 수 있습니다 (예 : "Save As"대화 상자). 히스토리 버퍼는 정상적인 작동의 일부로 그러한 응답을 저장할 수 있습니다. 이 지침의 목적은 캐시 데이터 구조에 대한 예상치 못한 액세스를 통해 우발적 인 정보를 공개하는 특정 사용자 및 서비스 저자의 명시된 요구 사항을 충족하는 것입니다. 이 지침의 사용은 경우에 따라 개인 정보를 향상시킬 수 있지만, 개인 정보를 보장하기위한 신뢰할 수 있거나 충분한 메커니즘은 아니라고 경고합니다. 특히, 악의적이거나 손상된 캐시는이 지침을 인식하거나 준수하지 않을 수 있으며, 통신 네트워크는 도청에 취약 할 수 있습니다.

모든 캐싱을 방지하려면 (예 : 뒤로 버튼을 사용할 때 재 장전을 강제로 강요) : 필요합니다.

  • IE에 대한 캐시가 없습니다

  • Firefox를위한 매장 없음

여기에 대한 내 정보가 있습니다.

http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/

no-store 정상적인 상황에서는 필요하지 않아야하며 속도와 유용성에 해를 끼칠 수 있습니다. HTTP 응답에 정보가 포함되어있는 경우 사용하기위한 것이므로 사용자에게 생성하는 부정적인 영향에 관계없이 디스크 캐시에 전혀 기록해서는 안됩니다.

작동 방식 :

  • 일반적으로 브라우저와 같은 사용자 에이전트가 응답을 캐시하지 않아야한다고 판단하더라도 사용자 에이전트 내부의 이유로 디스크 캐시에 저장할 수 있습니다. 이 버전은 사용자가 반드시 페이지를 다시 요청하지 않았지만 브라우저는 새로운 페이지보기를 고려하지 않는 "소스보기", "백", "페이지 정보"및 ON과 같은 기능에 사용될 수 있습니다. 그리고 사용자가 현재보고있는 것과 동일한 버전을 제공하는 것이 합리적입니다.

  • 사용 no-store 해당 응답이 저장되는 것을 방지하지만 이는 브라우저가 "뷰 소스", "백", "페이지 정보"를 제공하는 능력에 영향을 줄 수 있습니다. 다시 말해서, 사용자는 소스를 볼 수 있으며 브라우저가 메모리에 보관하지 않으면 이것이 불가능하지 않거나 서버에 새 요청을 초래할 것입니다. 그러므로, no-store 이러한 기능의 장애가있는 사용자 경험이 제대로 작동하지 않거나 빠르게 작동하지 않는 경우에만 사용되어야합니다. 콘텐츠가 캐시에 저장되지 않도록하는 것의 중요성이 높습니다.

현재의 이해는 중간 캐시 서버를위한 것이라는 것입니다. "캐시가 없음"이 응답하더라도 중간 캐시 서버는 컨텐츠를 비 휘발성 저장소에 저장할 수 있습니다.

이것은 잘못되었습니다. HTTP 1.1과 호환되는 중간 캐시 서버는 no-cache 그리고 must-revalidate 컨텐츠가 캐시되지 않도록 지침. 이 지침을 사용하면 응답이 중간 캐시에 의해 캐시되지 않으며 모든 후속 요청이 Origin 서버로 다시 전송됩니다.

중간 캐시 서버가 HTTP 1.1을 지원하지 않으면 사용해야합니다. Pragma: no-cache 그리고 최선을 다해 희망합니다. HTTP 1.1을 지원하지 않으면 주목하십시오 no-store 어쨌든 관련이 없습니다.

캐싱 시스템이 매장 없음을 올바르게 구현하면 캐시가 필요하지 않습니다. 그러나 전부는 아닙니다. 또한 일부 브라우저는 매장과 같은 캐시를 구현합니다. 따라서 엄격하게 필요하지는 않지만 둘 다 포함하는 것이 가장 안전 할 것입니다.

Chrome의 경우, 캐시가없는 캐시는 다시 방문하여 페이지를 다시로드하는 데 사용되지만 역사 (뒤로 버튼)로 돌아가는 경우에도 여전히 캐시입니다. History-Back의 페이지를 다시로드하려면 매장을 사용하지 마십시오. 즉, 모든 경우에 일하기 위해서는 반드시 검증해야합니다.

그래서 내가 항상 사용하는 모든 버그와 오해를 피하기 위해

Cache-Control: no-store, no-cache, must-revalidate

다시로드하는지 확인하려면.

HTTPS와 서버 전송을 통해 제공되는 파일을 다운로드하려고 할 때 버전 5에서 8에서 8까지 Internet Explorer가 오류가 발생합니다. Cache-Control: no-cache 또는 Pragma: no-cache 헤더.

보다 http://support.microsoft.com/kb/812935/en-us

사용 Cache-Control: no-store 그리고 Pragma: private 여전히 작동하는 가장 가까운 것 같습니다.

원래 우리는 몇 년 전에 No-Cache를 사용했으며 특정 브라우저와 함께 오래된 콘텐츠에 문제가 발생했습니다. 불행히도 세부 사항을 기억하지 못합니다.

우리는 그 이후로 매장을 사용하지 않았다. 그 이후로 브라우저 나 중개자의 오래된 콘텐츠에 대해 되돌아 보거나 단일 문제가 없었습니다.

이 공간은 확실히 구현의 현실과 다양한 RFC로 작성된 것들에 의해 지배됩니다. 특히 많은 프록시는 자신이 추적해야 할 정책을 대체함으로써 "성능 향상"의 더 나은 일을한다고 생각하는 경향이 있습니다.

일을 더 악화시키기 위해, 어떤 상황에서는 캐시가 없을 수 없지만 매장이 없을 수 있습니다.

http://faindu.wordpress.com/2008/04/18/ie7-ssl-xml-flex-error-2032-Stream-error/

OWASP는 다음을 논의합니다.

캐시 제어 지시문의 차이점은 무엇입니까?

응답의 캐시가없는 지시문은 응답이 후속 요청을 제공하는 데 사용되어서는 안된다는 것을 나타냅니다. 즉, 캐시는 헤더 에이 지시문이 설정된 응답을 표시해서는 안되지만 서버가 요청을 제공해야합니다. 캐시가없는 지침에는 일부 필드 이름이 포함될 수 있습니다. 이 경우 서버에서 제공 해야하는 지정된 필드 이름을 제외하고 캐시에서 응답을 표시 할 수 있습니다. 없음 지침은 전체 메시지에 적용되며 캐시가 응답의 일부 또는 요청을 요청한 요청의 일부를 저장해서는 안된다는 것을 나타냅니다.

이 지침으로 완전히 안전합니까?

그러나 일반적으로 Cache-Control : No-Cache, No Store 및 Pragma : No-Cache를 모두 사용하십시오. PDF, Word Documents, Excel 스프레드 시트 등과 같은 비 -HTML 컨텐츠 유형 등 위의 캐시 제어 지시문이 설정된 경우에도 종종 캐시가 발생합니다 (버전 및 추가로 검증 된 사전 검사 = 0, 체크 후의 추가 사용에 따라 다릅니다. = 0, max-age = 0 및 s-maxage = 0은 때때로 브라우저 퀴크 및 HTTP 구현으로 인해 브라우저 폐쇄시 파일 삭제에서 최소한 파일 삭제에 발생할 수 있습니다). 또한 'AutoComplete'기능을 사용하면 브라우저가 양식의 입력 필드에서 사용자가 유형하는 모든 것을 캐시 할 수 있습니다. 이를 확인하려면 양식 태그 또는 개별 입력 태그에는 'AutoComplete = "Off"속성이 포함되어야합니다. 그러나이 속성은 비표준 (주요 브라우저에서 지원하지만)이라는 점에 유의해야하므로 XHTML 유효성 검사를 중단합니다.

원천 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top