2014-12-08 4 views
1

У меня есть сайт, для которого я должен заставить HTTPS повсюду.ASP.NET MVC HTTPS Переадресация без предоставления информации об аутентификации

Я обеспокоен тем, что при переадресации HTTP-HTTPS, если пользователь уже зарегистрирован (через файлы cookie или токены), эта информация аутентификации может быть передана непреднамеренно в виде открытого текста.

Как я могу гарантировать, что этого не произойдет?

ответ

1

Один из способов безопасного переадресации без захваченной защищенной информации - это механизм перезаписи - при условии, что у вас нет маркерной/защищенной информации в самом URL-адресе (например, сеанс и т. Д.).

<system.webServer> 
    <rewrite> 
     <rules> 
      <clear /> 
      <rule name="HTTPS Redirect" stopProcessing="true"> 
       <match url="(.*)" /> 
       <conditions> 
        <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
       </conditions> 
       <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="true" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

Если проанализировать результаты этой конфигурации в Скрипач, вы заметите, что первоначальный небезопасные запрос не защищенной информации, даже если пользователь авторизован.

Вот запрос GET:

GET http://www.someurl.net/Dashboard HTTP/1.1 
User-Agent: Fiddler 
Host: www.someurl.net 

Отклик только стандартный 301 завивка снова перенаправлять ничего обеспеченных перевели:

HTTP/1.1 301 Moved Permanently 
Content-Type: text/html; charset=UTF-8 
Date: Mon, 08 Dec 2014 13:07:53 GMT 
Location: https://www.someurl.net/Dashboard 
Server: Microsoft-IIS/8.0 
X-Powered-By: ASP.NET 
Content-Length: 162 
Connection: keep-alive 

<head><title>Document Moved</title></head> 
<body><h1>Object Moved</h1>This document may be found <a HREF="https://www.someurl.net/Dashboard">here</a></body> 
+0

насчет заголовков HTTP? –

+0

Также, как это можно сделать, не полагаясь на модуль перезаписи? –

+0

Возможно, вы можете сделать чек в событии 'Application_BeginRequest' global.asax или даже создать фильтр MVC. Что касается HTTP-заголовков, то запрос GET представляет собой полный запрос GET, который я захватил на одном из моих сайтов-разработчиков после моего входа в систему, а затем запросил заблокированную страницу. Это все, что отправлено как часть запроса необеспеченным. –

Смежные вопросы