Совместное использование системы входа в систему между классическим ASP и ASP.NET

При использовании раскадровок

self.clipsToBounds = true

можно настроить для панели инструментов в атрибутах времени выполнения. Это скроет линию волос. Проверено в iOS 7 и 8.

12
задан Kjensen 28 May 2009 в 15:39
поделиться

5 ответов

Я думаю, что ваша идея находится на правильном пути.

Как вы, наверное, уже знаете, классические asp и asp.net не могут совместно использовать одно и то же состояние сеанса, поэтому вам действительно нужен механизм для входа из одного в другой.

Я бы сделал следующее: когда кто-то войдет в систему, создайте уникальный GUID, который вы сохраните в базе данных для этого пользователя. Когда вы переходите с одного сайта на другой, передайте этот GUID в строку запроса. Когда вы пытаетесь автоматически зарегистрировать их на другом сайте, найдите этот GUID и посмотрите, не привязан ли он к кому-нибудь. Если это так, войдите в систему.

Таким образом вы не передадите ничего, что пользователь мог бы угадать или расшифровать.

9
ответ дан 2 December 2019 в 20:41
поделиться

How does the classic ASP system maintain login state? "Piggy-backing" off that would be your best bet, by far.

All classic ASP systems I've worked on have used cookies for tracking authentication information, so just read those and compare against the database that you can access.


As the information is stored in a Classic ASP session, could you add a "redirect page" to the classic ASP side of things that is the "entrance" to the new module, and cause this to write the useful data out as cookies, or trigger a POST to your start page? By using cookies or a POST request, you minimise your worry about having the url "hijacked" allowing someone to get into the ASP.net site without username/password.

4
ответ дан 2 December 2019 в 20:41
поделиться

Не могли бы вы отправить его через форму, а не через строку запроса? Это исключит возможность его перехвата в URL.

0
ответ дан 2 December 2019 в 20:41
поделиться

Если перехват является серьезной проблемой, вам необходимо запустить сайт через HTTPS. В противном случае использование UserID + Nonce, которое затем хешируется паролем, является достаточно надежным.

В качестве альтернативы вы можете заставить приложение ASP добавить файл cookie сеанса GUID после входа в систему и сохранить этот GUID в таблице БД. Ваш ASP.NET может найти GUID из файла cookie, чтобы узнать, был ли выполнен вход в систему. Если вы включите значение cookie сеанса ASP в таблицу, вы можете достаточно убедиться, что текущий сеанс ASP - это тот же сеанс, который использовался при создании GUID.

0
ответ дан 2 December 2019 в 20:41
поделиться

Вы справедливо обеспокоены атакой типа MITM, возможно, через отравление кэша DNS или подобное. В зависимости от ваших обстоятельств этого может быть достаточно, чтобы смягчить возможные последствия этого, добавив временное ограничение к токену входа, который передается через границы приложения.

«GUID в подходе к базе данных» - это то, что я успешно использовал я в прошлом, как для передачи пользователей между двумя приложениями, использующими одну и ту же базу данных аутентификации, так и для сценариев типа «электронное письмо для сброса пароля». Вы можете «истечь» это, добавив в записи дополнительный столбец с указанием даты, когда был добавлен GUID, и изменив код вашего приложения, чтобы входить только в авторизацию GUID, которая меньше x минут / часов / дней.

В качестве альтернативы можно было бы избежать дополнительных полей в базе данных, объединив что-то вроде:

UserId + [Value representing current time to nearest x minute / hour /day] + Salt

.. его хэширование, затем дублирование вашего алгоритма в другом приложении и сравнение двух сгенерированных значений.

В общем, я думаю, что предложенное вами решение подходит для проблемы. Конечно, это не так уж сложно.

2
ответ дан 2 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: