2014-01-17 1 views
2

내 MVC4 모바일 애플리케이션에 등록, 로그인 페이지 및 나머지 페이지가 있습니다. 나는 등록 및 로그인 페이지와 같은 모든 민감한 정보 페이지와 HTTP를 다시 페이지로 보내는 HTTPS 연결로 사용자를 리디렉션하려고합니다. 컨트롤러 액션의 방법 :이를 위해 로그인, 등록과 같은 일부 페이지에서 MVC 4를 사용하는 모바일 응용 프로그램의 HTTP에서 HTTPS 로의 리디렉션

, 나는 다음과 같은 코드를 사용

if (!HttpContext.Request.IsSecureConnection) 
{ 
    var url = new UriBuilder(HttpContext.Request.Url); 
    url.Scheme = "https"; 
    Response.Redirect(url.Uri.AbsoluteUri); 
} 

하지만이 오류가 점점 :

Server cannot modify cookies after HTTP headers have been sent.

+0

이 줄을 추가, 사이트 전체 HTTPS를 Global.asax에있는하려면); – user3166404

+0

이 오류를 피하기 위해 리디렉션 전에 쿠키 값을 설정하는 방법 @ testuser – user3166404

답변

0

당신은 무엇을 할 컨트롤러의 [RequireHttps] 속성을 사용할 수 있습니다 너는 묻고있다. 그러나 나는 이미 SSL 인증서를 가지고 있기 때문에 모든 거래를 HTTPS로 만들 것을 제안합니다.

제안한 이유는 사용자가 인증을 받으면 모든 HTTP 요청과 함께 인증 쿠키가 전송되기 때문입니다. 그런 다음 HTTPS 요구 사항이있는 컨트롤러에서 벗어나면 man in the middle attack이 잠재적 인 취약점이됩니다. 사용자 HTTP 트래픽을 스니핑 할 수있는 사람은 누구나 쿠키를 훔쳐 잠재적으로 세션을 가로 챌 수 있습니다.

(FormsAuthentication.SignOut에서이 오류를 얻는 RegisterGlobalFilters 방법

filters.Add(new RequireHttpsAttribute()); 
+0

컨트롤러에서 [RequireHttps] 특성을 사용했지만 오류가 발생했습니다. – user3166404

+0

Register.GlobalFilters 메서드가 Global.asax에 없으므로 코드를 게시하십시오. 나를 위해 도움이 @ 제임스 – user3166404

+0

[이 스택 질문에 허용 대답] (http://stackoverflow.com/questions/13671445/invalid-arguments-error-in-global-asax-in-mvc) 당신이 필요로 꽤 많이있다 (지금 내 소스를 올리기 위해 내 소스에 액세스 할 수 없습니다.) – James

관련 문제