Можно ли пройти аутентификацию на другом сайте? - PullRequest
1 голос
/ 17 марта 2010

Если я нахожусь на веб-сайте № 1 и ввожу свое имя пользователя / pwd для веб-сайта № 2 на странице входа в систему, которая находится на веб-сайте № 1, а веб-сайт № 1 скрытно отправляет httpwebrequest на веб-сайт № 2 и сообщения на страницу входа. Если я перейду на веб-сайт № 2, должен ли я войти в систему?

веб-сайт № 2 использует проверку подлинности с помощью форм, и я вызываю httpHandler, который находится на веб-сайте № 2, и передаю ему имя пользователя / пароль через строку запроса.

Должно ли это работать?

Ответы [ 6 ]

1 голос
/ 17 марта 2010

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

Мы используем Siteminder CA для межсайтовой аутентификации. По сути, web 1 создает уникальный идентификатор сеанса на сервере siteminder и передает ему все учетные данные и информацию. Siteminder вызывает web2 и передает информацию с помощью переменных сеанса. Web 2 извлекает данные из сеанса и использует их. Там происходит гораздо больше, но это как раз то, что нужно.

Чтобы сделать что-то подобное, Я бы настоятельно рекомендовал использовать готовое решение, так как обычно кодирование пользовательских средств защиты обычно не дало .

1 голос
/ 17 марта 2010

Хотят ли сайты № 1 и № 2, чтобы их пользователи имели единый вход? Если так, прочитайте на едином входе. Это более крупный проект, чем здесь. На это есть хорошая книга от Wrox: http://www.amazon.com/Professional-ASP-NET-Security-Membership-Management/dp/0764596985/ref=cm_lmf_tit_10

Или мы воображаем что-то зловещее?
Если мы представляем что-то зловещее, то злой сайт № 1 будет собирать учетные данные, а затем автоматизировать браузер на стороне сервера, чтобы начать проверку, чтобы увидеть, использует ли сайт № 2 тот же пароль и комбинацию пользователей. Тогда сервер будет иметь аутентифицированный сеанс. Это не даст пользователю, который получил доступ к сайту № 1, файл cookie авторизации, объект HttpWebRequest на сервере получит файл cookie авторизации. Сайт № 2 не мог ничего сделать, чтобы предотвратить это, потому что запрос браузера с одного компьютера очень похож на запрос браузера от другого. Хорошо продуманная атака подделала бы все элементы запроса браузера так, чтобы он выглядел так, как если бы он исходил из браузера, а не из примитивного объекта HttpWebRequest, который может даже не устанавливать user-agent.

Сайт № 2 должен прекратить использование паролей и идентификатора пользователя или использовать двухфакторный идентификатор, если они заинтересованы в этом, или сделать что-то, требующее JavaScript для входа в систему, потому что подделка браузера, выполняющего JavaScript, сложнее, чем подмена браузера, который просто отправляет и получает http запросы и ответы.

1 голос
/ 17 марта 2010

То, что вы пытаетесь сделать, называется Single Signon . То, как вы это делаете, отправка значений с одного сайта на другой, вероятно, не сработает, потому что вы используете ту же технику, которую хакер может использовать, чтобы обманом заставить пользователя поделиться своей информацией для входа. Это называется атака на межсайтовый запрос атака. IIS настроен так, чтобы это не разрешалось.

Как правило, вам нужна центральная система аутентификации, которую оба сайта используют для обмена информацией для входа. Это можно сделать несколькими способами, включая систему входа в систему на основе общей базы данных. Google "asp.net единый вход" для большего количества идей.

0 голосов
/ 17 марта 2010

Поскольку оба ваших сайта используют FormsAuthentication, вы можете легко настроить их на совместное использование схем шифрования FormsAuthentication.

Это позволит вам автоматически выполнять перекрестную аутентификацию приложений :)

0 голосов
/ 17 марта 2010

Хотя это может быть сделано в некоторых случаях, в виде HTTP-запроса с параметрами POST, вы не будете аутентифицированы, как только перейдете на сайт # 2.

Это связано с тем, что, как правило, эти сайты хранят файлы cookie с вашей стороны, и они основаны на домене, что означает, что даже если вы захватили их и сохранили их самостоятельно с сайта № 1, имя файла cookie не будет совпадать с сайтом № 2 .

Кроме того, на сайте №2 может быть нелегко пройти проверку подлинности, и это обычно проблема безопасности, о которой знают разработчики. Это также можно считать попыткой XSS.

Если вы просто делаете это для себя, я бы порекомендовал LastPass и сохранил бы в нем большую часть вашей информации.

Пожалуйста, пересмотрите свои цели и способы их достижения, это не тот путь.

Редактировать: Текст ссылки.

0 голосов
/ 17 марта 2010

Это может сработать, в зависимости от мер безопасности, установленных на веб-сайте № 2. Для защищенного сайта это не получится.

Я бы рекомендовал против этого исключительно на основе хорошей безопасности и хороших методов кодирования / проектирования.

Если вам непонятно, какие меры безопасности мешают этому, вам, вероятно, следует обучиться, чтобы предотвратить подобные проблемы на вашем собственном сайте. Смотри http://www.owasp.org/index.php/Top_10_2007

...