Совместное использование файла cookie сеанса между двумя именованными доменами - PullRequest
3 голосов
/ 19 января 2011

У меня есть веб-приложение .net со следующими доменами: www.domain.com sub.domain.com files.domain.com

Когда пользователь входит в систему на domain.com или sub.domain.com, я бы хотел, чтобы он разделял состояние сеанса (т.е. входил в оба домена одновременно). Это можно сделать, установив для домена в сеансе coookie значение «.domain.com». Однако моя проблема заключается в том, что домен "files.domain.com" должен , а не иметь состояние сеанса из-за проблем безопасности (xss-атаки из пользовательских файлов, размещенных в этом домене, являются проблемой).

Возможно ли в ASP.NET использовать один и тот же идентификатор сеанса asp.net для этих двух доменов, но не третий?

Заранее спасибо!

Ответы [ 5 ]

3 голосов
/ 28 января 2011

Вот несколько вариантов, которые приходят на ум:

# 1 - Отправьте запрос на вход в оба приложения с помощью сценария на стороне клиента. Это позволит вам установить куки для обоих действительных доменов одновременно. Это позволяет избежать проблемы XSS, которая вас беспокоит, путем создания файлов cookie для конкретных доменов, на которых вы хотите, чтобы ваши пользователи проходили аутентификацию.

# 2 - Переместите ваш «незащищенный» сайт в другой домен. Например: www.domain-files.com. С этой опцией вы можете использовать общий cookie для управления аутентификацией.

2 голосов
/ 19 января 2011

Не путайте сессионные куки-файлы и формируйте куки-файлы аутентификации. Сеанс ASP.NET не может быть разделен между приложениями. Что касается файла cookie проверки подлинности форм, то это всего лишь простой файл cookie, и способ работы файлов cookie заключается в установке свойства domain.

Одним из способов достижения этого является определение специальных machineKeys in web.config для двух приложений. Таким образом, пользователи, прошедшие аутентификацию на www.domain.com, получат файл cookie, который будет зашифрован с помощью машинных ключей www.domain.com, и поскольку только sub.domain.com имеет одинаковые ключи, сможет дешифровать файл cookie. Файл cookie по-прежнему будет отправлен на files.domain.com, но он не сможет расшифровать его, и пользователи не будут проходить проверку подлинности там.

1 голос
/ 28 января 2011

На мой взгляд, вопрос в том, почему люди могут загружать файлы, которые могут содержать атаки XSS? если они могут сделать это, они могут найти способы вызвать другие проблемы.

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

Я согласен с joe.liedtke, который говорит, что необходимо переместить files.domain.com в другой домен и избежать этой проблемы.

0 голосов
/ 25 января 2011

Возможно, вам удастся сохранить значение Guid в файле cookie напрямую, используя Response.Cookies, а затем запросить базу данных на основе этого значения, чтобы получить общую информацию для аутентификации.

0 голосов
/ 21 января 2011

Попробуйте это: Совместное использование аутентификации asp.net в разных приложениях в разных поддоменах

Как упоминалось ниже, только приложения с соответствующими машинными ключами смогут аутентифицироваться друг с другом.Поэтому, если для файла files.domain.com задан другой ключ компьютера, он не сможет расшифровать куки-файл сеанса и не будет иметь права на другие домены

...