2017-04-11 10 views
0

모든 형태의 보안에 antiforgerytoken을 사용하는 응용 프로그램이 있습니다. 앱은 http 바인딩이 8080 abd로 설정된 웹 사이트에서 호스팅되며 https는 443 (기본 https 포트)으로 설정됩니다. 지금까지는 모든 요청이 https를 통해 이루어 졌는지 확인했습니다 (MVC 애플리케이션은 필수 https 필터를 사용 중이었고 웹 구성은 쿠키 항목 requiressl을 true로 설정하고 owin은 인증 쿠키도 https로 설정했습니다).ASPNET MVC 5 : 위조 방지 쿠키가 존재하지 않습니다.

최근에는 우리에게 https 요청을 처리하는 방화벽이 있기 때문에 변경해야했습니다. 그것은 항상 최종 고객에게 https를 통해 응답을 제공하지만 http를 통해 호출 될 수 있도록 내 앱을 변경했습니다.

필자는 필요한 https 필터를 제거하고 config에서 쿠키에 필요한 ssl을 지정하고 owin auth cookies 설정을 변경하여 모든 것이 잘 될 것이라고 생각했습니다. 불행히도 그런 일이 발생하지 않았고 유효성 검사 중에 예외 위조 토큰 쿠키 누락이 발생하기 시작했습니다. 이제, https를 사용하면 모든 것이 작동하지만, http (포트 8080에 있음)로 변경하면 문제가 발생합니다.

위조 방지 구성 설정이 글로벌 asax에서 변경되었지만 이전 문제에 대한 설명을 찾을 수 없습니다. 다른 말로하면 https 액세스가 문제없이 작동하지만 http 액세스가 위조 쿠키를 찾을 수 없다는 예외를 던지면서 끝나는 이유는 무엇입니까?

아이디어가 있습니까?

감사합니다, 루이스

답변

2

더,하지 않는 것보다 가능성이합니다 (Secure 태그로 전송 쿠키) 보안 쿠키를 사용하고 있습니다. 이것들은 HTTPS 접속에서만 살아남을 수 있습니다. SSL이 삭제되는 즉시 보안 쿠키가 삭제됩니다. 일 수 있지만 실제로는 사용자에게 공격 경로를 열어 쿠키가 프로토콜 전환을 통해 일반 텍스트로 노출되도록합니다.

당신이 할 수있는 최선의 방법은 모든면에서 보안을 유지하는 것입니다. SSL이 방화벽에 의해 제공되고 있기 때문에 귀하의 사이트에 SSL을 구현할 수 없다는 것을 의미하지는 않습니다. 유일한 차이점은 외부 도메인이 적용되지 않으므로 자체 서명 된 인증서가 필요하다는 것입니다. 그 외에도 보안되지 않은 사이트가 아닌 내부적으로 보안 사이트에 대한 프록시 전송에 문제가 없어야합니다.

+0

안녕하세요. Chris. 나는 그걸 할 수있어. 그러나 방화벽을 통해 요청을받는 동안 설명하는 동작이 발생하지 않습니다. 내 앱에서 이전 설정을 제거한 후 컴퓨터에 액세스하면 https를 통해서만 작동합니다. 그래서, 내가 http 또는 https를 통해 작동해야 응용 프로그램으로 끝났지 만, 내가 http를 통해 액세스하려고 할 때마다 언급 한 antiforgery 오류로 실패하고있다 (이유는 모르겠지만 내가 localhost라는 이름을 사용한다면 광고 기계 이름 대신 오류가 발생하지는 않습니다). –

+0

@Chris Pratt는 ssl을 변경하라고 알려 왔으며 현재 예상대로 localhost에서 작업하고 있습니다.