Google 보안 팀은 모든 쿠키가 Secure = true로 설정되어야합니다.AntiForgeryConfig.RequireSsl은 SSL없이 사용할 때 임의의 오류를 발생시킵니다.
protected void Application_BeginRequest(object sender, EventArgs e)
{
AntiForgeryConfig.RequireSsl = HttpContext.Current.Request.IsSecureConnection;
}
을하지만 지금 우리는 SSL을 사용하지 않는 우리의 테스트 서버에 문제가 :
는 MVC AntiForgery을 위해, 우리는 다음과 같은 코드를 사용하고있는 보안 속성을 설정합니다. 때때로 우리는 자발적인 오류를 이예외의 위치를 파악하기 위해 ASP.NET MVC 코드에서 찾고
The anti-forgery system has the configuration value AntiForgeryConfig.RequireSsl = true, but the current request is not an SSL request.
, 우리는 발견 다음
private void CheckSSLConfig(HttpContextBase httpContext)
{
if (_config.RequireSSL && !httpContext.Request.IsSecureConnection)
{
throw new InvalidOperationException(WebPageResources.AntiForgeryWorker_RequireSSL);
}
}
그것은 올바른 것하고 실행하기 때문에 작동합니다 순서는
AntiForgeryConfig.RequireSsl = HttpContext.Current.Request.IsSecureConnection;
// ... something happens in between
if (_config.RequireSSL && !httpContext.Request.IsSecureConnection)
{
throw new InvalidOperationException(WebPageResources.AntiForgeryWorker_RequireSSL);
}
이다 그러나 우리가 그 자체로 우리의 테스트에서 SSL을 사용하지 않지만 일부 요청을 HttpContext.Current.Request.IsSecureConnection 사실 반환 것 같다 rver.
어떻게 될까요? 왜 우리는이 예외를 얻습니까?
마침내 근본 원인을 파악할 수 있었습니까? – Darius
확실하지 않습니다. 우리의 모든 테스터를 SSL로 이동 한 후에 오류가 사라진 것 같습니다. 아마도 잠시 동안 테스트 서버에 http와 https 웹 사이트가 있었기 때문에 브라우저에 엉망진창이되어 HTTP 전용 웹 사이트에 보안 쿠키를 전송했기 때문일 수 있습니다. 어쨌든 다음에 https로 웹 응용 프로그램을 개발할 때 염두에 두어야 할 것입니다. – JustAMartin
우리는 비슷한 점도 있지만 약간 다른 맥락에서 볼 수 있습니다. SSL은 테스트 환경에 설치되어 있지만 테스트 용으로는 사용하지 않습니다. 인증서를 삭제하면 정상적으로 작동합니다. SSL을 구성했지만 https : URL을 사용하지 않으면이 오류가 발생합니다. 기계 수준의 구성과 환경 문제를 제안하는 1 대의 기계에만 국한된 것으로 보입니다. –