는 방법이 있을 유지하는 페이지에 렌더링에서 한 사람은 로그아웃 하지만"뒤로"버튼?

StackOverflow https://stackoverflow.com/questions/64059

문제

나는 몇몇 웹사이트를 필요로 로그온와 보여주는 민감한 정보입니다.

이 사람이 페이지에 로그인하라는 메시지가 표시되고,다음 정보를 참조.

사람이 로그를 사이트와 리디렉션에 다시 로그인 페이지입니다.

그 다음 사람을 칠 수 있다"뒤로"가 바로 페이지로 돌아가는 민감한 정보가 포함되어 있습니다.때문에 브라우저 생각으로 렌더링되는 HTML,그것은 보여줍니다 그들에게 문제가 없습니다.

는 방법이 있을 방지하기 위해 정보가 표시되면 사람이 안타가"뒤로"버튼을에서 로그아웃 화면?내가 하려고 하지용 버튼을 다시 자체 내을 유지하기 위해 노력하고 있는 민감한 정보가 표시되기 때문에 다시는 사람이 로그인하지 않으로 사이트는 더 이상.

인수를 위해,위트/시나리오에 ASP.NET 과 형태 인증(그래서 때 사용자가 첫 번째는 페이지로,페이지,그들이 원하는 그들이 로그온 페이지로 리디렉션됩-는 경우에는 차이가).

도움이 되었습니까?

해결책

짧은 대답은 그것을 할 수 없습니다 안전하게 보관합니다.

그러나,많은 트릭의 구현할 수 있는 어렵게 사용자가격을 얻을 민감한 데이터를 표시합니다.

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");

이것은 캐싱을 사용하지 않도록 설정에서 클라이언트 측에,그러나이 지원하지 않는 모든 브라우저.

당신이 사용하는 옵션을 가지고 다음 아약스에 민감한 데이터를 사용하여 검색할 수 있습니 updatepanel 업데이트되는 클라이언트에서 코드고 따라서 그것은 표시되지 않는 경우 치시지 않으면 클라이언트가 여전히 기록됩니다.

다른 팁

캐시와 역사는 독립적 하나에 영향을 미치지 않는다.

유일한 예외가 를 위해 만든 은행 는 조합의 HTTPS 고 Cache-Control: must-revalidate 힘을 새로 고침을 탐색할 때에는 역사입니다.

일반 HTTP 수 있는 방법이 없지를 제외하고 이것을 이용하여 브라우저 버그가 있습니다.

할 수 있습 해킹 그것의 주위에 Javascript 를 사용하는 검사 document.cookie 와 리디렉션을 할 때에"살인자"쿠키가 설정되어 있지만 내가 상상이 갈 수 있는 심각이 잘못된 경우 브라우저 설정하지 않고/명확한 쿠키 정확히으로 예상된다.

aspdev.org:

다음 줄을 추가에서 최고의 Page_Load 이벤트를 처리하 ASP.NET 페이지를 캐쉬에 저장하지 않는 사용자의 브라우저:

Response.Cache.SetCacheability(HttpCacheability.NoCache)

설정 이 숙박 시설을 보장하는 경우에는 사용자의 콘텐츠은 사라질 것,그리고 그 경우 프레스"새로 고침"그는 것입 로그인 페이지.

DannySmurf, <meta> 요소들은 매우 신뢰할에 올 때 제어 캐싱과 Pragma 에서 특정 심지어는 더욱 그렇다. Reference.

dannyp 고,다른 사람에 no-cache 멈추지 않는 캐시에 저장하는 민감한 리소스입니다.그것은 단지는 캐쉬할 수 없는 봉사한 리소스가 저장되지 않고의 유효성을 다시 검사합니다.을 방지하려면에 민감한 리소스에서 캐쉬를 사용할 필요가 없음-저장소 지시어.

할 수 있는 자바스크립트 함수가 빠른 서버를 검사(ajax)는 경우 사용자가 로그인하지 않,삭제는 현재 페이지고 그것을 대체로 메시지입니다.이것은 분명히 취약한 사용자 whos 자바 스크립트,하지만 그것은 매우 드물다.에 거꾸로,이것은 모두 브라우저와 서버 기술(asp/php etc.)지를 원활하게 관리할 수 있습니다.

당신을 찾고있 no-cache 지침:

<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

만약 당신이 주인 페이지 디자인 것,이 될 수있는 약간의 저글링,하지만 난 당신이 생각하는 생각을 넣을 수 있습즈에서 이 지시어를 사용하면 페이지 하나의 나머지 부분에 영향을 주지 않고 귀하의 사이트(가정의 당신이 원하는 무엇).

만약 당신이 이 지시어 설정,브라우저에 충실하게 머리를 다시 서버를 찾을 위한 브랜드의 새로운 복사본 페이지는 원인이됩니다 당신의 서버는 사용자가 인증되지 않고 그를 로그인 페이지입니다.

가 로그아웃 작업이 될 POST.다음은 브라우저 메시지가 표시됩니다"Are you sure you want 을 다시 게시물 양식?"보다는 표시이다.

몰에서 수행하는 방법 ASP.NET 하지만 PHP 나는 뭔가를 다음과 같:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

을 강제하는 브라우저는 것을 다시 확인 항목,그래서 당신은 인증을 확인해야한 트리거를 부정하는 사용자에 액세스 할 수 있습니다.

그것은 약간의 변형,그러나 당신이 자바 애플릿 또는 플래시 응용 프로그램이 포함되었 및 인증을 통해 이루어졌다는 것을 만들 수 있도록 그것들은 인증서,erm,'실시간으로 서버마다 그들은 원하는 정보를 봅니다.

이용할 수 있도 암호화하는 모든 정보입니다.

항상있는 사람만 페이지를 저장과 함께 민감한 정보가 없으므로 캐쉬하지 않을 이용 상황(그러나 스크린 샷을 수의 플래시 또는 java 응용 프로그램).

완전성을 위해:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.Now.AddMinutes(-1));

올바른 답을 포함 사용을 설정하는 HTTP Cache-Control 헤더에 응답합니다.하려는 경우에는지 확인 캐시 출력을 할 수 있습 Cache-Control:no-cache.이것은 종종에서 사용되는 조정이 없으십니까?

다른 옵션은,원하는 경우 제한 캐싱을 포함한 설정이 만료 시간과해 다시 확인,하지만 이러한 잠재적으로 모든 원인이 캐시된 페이지를 다시 표시됩니다.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4

만,주요 브라질 은행 주식 회사(브라질)에 의해 알려진 하나의 세계에서 가장 안전하고 효율적인 집 은행 소프트웨어,그들은 단순히 넣어 역사입니다.go(1)모든 페이지에.그래서,당신은 다시 버튼을 누르면,당신은 당신이 반환됩니다.간단합니다.

시기 바랍로 HTTP 응답 헤더로 보낸다.대부분의 ASP 코드는 사람들은 게시 보을 설정 할 수 있습니다.해야합니다.

다람쥐에서 책 O'reilly 성경 HTTP,고 크리스 시프렛 HTTP 예약 좋은뿐만 아니라.

할 수 있는 웹 페이지에 민감한 것으로 반환된 HTTP POST,다음에서 대부분의 경우 브라우저는 당신에게 메시지를 요구하려는 경우고 싶어 다시 전송 데이터입니다.(나는 불행하게도 찾을 수 없습니다 표준에 대한 소스 이 동작을 수행할 수 없습니다.)

난 그냥 은행 예습니다.

페이지 은행이 그것:

<meta http-equiv="expires" content="0" />

이해야에 대한 이정합니다.

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