Ostatnio miałem trochę problemów z miejscem na AppHarbor którym pisałem o ich forach wsparcia: Request.IsSecureConnection always returns falsesłabnącym ciasteczka jako „bezpieczne” w formach auth gdy strona jest za równoważenia obciążenia obsługującego cert TLS
W skrócie, ponieważ system równoważenia obciążenia deszyfruje ruch HTTPS, zanim trafi on do aplikacji internetowej, atrybuty takie jak Request.IsSecureConnection
i konfiguracja taka jak requireSSL
w formularzu auth nie zachowuje się zgodnie z oczekiwaniami. W rzeczywistości w tym drugim przypadku nie można nawet uwierzytelnić, ponieważ aplikacja uważa, że żądanie nie przychodzi za pośrednictwem protokołu HTTPS.
Jest to forma auth, która jest szczególnie problematyczna, ponieważ bez niej pliki cookie nie są ustawione na "bezpieczne" i są wysyłane za pośrednictwem protokołu HTTP, jeśli witryna jest dostępna tylko według nazwy domeny i domyślnie wyświetla niezabezpieczony schemat URL.
Jaki byłby najlepszy sposób obejścia tego problemu? Wolałbym wykorzystać natywną konfigurację zabezpieczeń, czy ktoś może zobaczyć sposób na zastąpienie implementacji, która sprawdza, czy połączenie jest bezpieczne? Jest to dość łatwe do wykrycia, czy wniosek został doręczony przez HTTPS (zarówno na podstawie Request.Url.Scheme
lub nagłówku X_FORWARDED_FOR
), to tylko kwestia starannie wiążąc to z.
IsSecureConnection sprawdza tylko czy adres URL zaczyna się od https: // (a nie od http: //) – Aristos
Czy jesteś tego pewien? Wydaje się, że jest jeszcze więcej w oparciu o reakcję w App Harbor i innych ludziach doświadczających podobnych problemów w tych samych okolicznościach w innych zrównoważonych scenariuszach obciążenia. Rozumiem, że sprawdza, czy połączenie korzysta z bezpiecznych gniazd, ale to nie jest zależne od tego, czy schemat URL jest HTTPS, stąd problem. –
Ostatni raz sprawdzam to z NetReflectorem i widzę kod "IsSecureConnection", który sprawdza się tylko wtedy, gdy URL zaczyna się od https: // Jeśli możesz uruchomić NetReflector, znajdziesz funkcję i sprawdzisz ją samodzielnie. – Aristos