Частичный SSL сайта с использованием контроля входа в систему asp.net

Я пытаюсь преобразовать домашнюю систему входа в стандартный элемент управления входом asp.net, включенный в .net. Я хочу, чтобы все сообщения на веб-сайте для пользователя, не вошедшего в систему, были в виде открытого текста, но заблокировали все в SSL после входа пользователя в систему, включая передачу имени пользователя и пароля.

У меня раньше это работало, загружая вторую страницу - "loginaction.aspx" - с префиксом https:, а затем вытаскивая имя пользователя и пароль, ища соответствующие элементы управления текстовым полем в Request.Form.Keys. Есть ли способ сделать что-то подобное, используя элементы управления входом .net? Я не хочу иметь отдельную страницу входа в систему, а лучше включать этот элемент управления (в рамках просмотра входа) на каждую страницу сайта.


person Jeffrey    schedule 18.09.2008    source источник


Ответы (3)


Вы не сможете просто сделать то, о чем говорите, потому что обратная передача (это то, что использует элемент управления входом) будет независимо от безопасности страницы (SSL или не-SSL).

Лучше всего в этом сценарии использовать IFRAME, который содержит страницу HTTPS (SSL), которая просто содержит элемент управления входом. Возможно, вам придется перенаправить на другую страницу после входа в систему, которая позволит вам выйти из IFRAME.

План B заключался бы в том, чтобы иметь отдельную форму на странице (вне вашей основной ФОРМЫ), которая имеет свойство ACTION, указывающее на другую страницу, где вы обрабатываете логин. Вам нужно будет использовать свой собственный код входа для обработки аутентификации форм.

person TAG    schedule 12.11.2008
comment
Имейте в виду, что использование любого из этих методов все еще небезопасно, так как оно уязвимо для человека, находящегося в середине атаки. Для получения дополнительной информации прочтите это. jlorenzen.blogspot.com/2009/11/ - person Erik Funkenbusch; 16.09.2012

Мне удалось добиться этого, добавив событие OnClientClick к элементу управления кнопкой входа и установив для него следующую функцию javascript.
`

function forceSSLSubmit() 
{

                var strAction = document.forms[0].action.toString();

                if (strAction.toLowerCase().indexOf("http:") == 0) {
                    strAction = "https" + strAction.substring(4);

                    document.forms[0].action = strAction;
                }

        }

`

person FarReachChad    schedule 23.09.2010

Вы не сможете использовать свой сайт без SSL, с полем входа на каждой странице, а затем отправлять имя пользователя и пароль через SSL.

Единственный способ добиться этого - использовать какие-то фреймы. Таким образом, вся ваша страница может быть без SSL, но фрейм входа должен быть SSL.

Обычные способы сделать это - либо заблокировать весь сайт с помощью SSL, не беспокоиться о том, чтобы имя пользователя и пароль были зашифрованы SSL и перейти на SSL после входа в систему, либо перейти по маршруту фреймов, о котором я упоминал выше.

person AaronS    schedule 18.09.2008