Параллельные пользовательские сессии - почему мы не видим больше этого? - PullRequest
2 голосов
/ 25 декабря 2008

Это что-то напыщенное, а также вопрос.

Есть некоторые сайты, например, Facebook, на которых вы хотите, чтобы вы одновременно входили только в одну учетную запись.

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

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

Почему несколько пользователей с одного клиента могут быть плохой идеей?

Ответы [ 7 ]

8 голосов
/ 25 декабря 2008

Я думаю, что это то, что должно быть реализовано браузерами, разрешив несколько сеансов, каждый из которых использует свой собственный cookie / аутентификация / и т. Д.

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

3 голосов
/ 25 декабря 2008

«Почему несколько пользователей с одного клиента могут быть плохой идеей?»

Это совсем не плохая идея, но использование HTTP заставляет нас идти по этому пути.

Большинство клиент-серверных протоколов с состоянием - клиент должен аутентифицироваться только один раз во время квитирования, и затем сеанс представлен соединением сокетов. Если вы потеряете соединение, вы потеряете сеанс и должны пройти повторную аутентификацию. Затем тривиально написать приложения, которые допускают несколько сеансов (как для одного, так и для разных пользователей) в одном процессе.

HTTP не имеет состояния. Клиент должен каким-то образом проходить повторную аутентификацию при каждом отдельном запросе. Информация об аутентификации обычно хранится в файлах cookie, чтобы пользователю не нужно было участвовать после первоначальной аутентификации. Куки, однако, являются глобальными - не только глобальными в процессе, но и в целом между экземплярами / вызовами приложения. Следовательно, вы застряли в одном сеансе.

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

3 голосов
/ 25 декабря 2008

Простая проблема в том, что большинство сеансов осуществляются с помощью файлов cookie, и практически невозможно сделать это без файлов cookie.

И как куки работают, связаны ли они с доменом / путем, и все куки, связанные с этим доменом, отправляются.

Таким образом, если вы разрешите войти дважды с помощью двух разных файлов cookie, проблема будет заключаться в том, что каждая последующая страница будет отправлять ОБА файлов cookie, и сервер, который видит оба файла, не знает, от какого «пользователя» вы выступаете.

Единственный способ - это передавать «нить» идентичности вокруг всех ссылок (то есть переписывать каждую ссылку на сайте на лету в foo.bar?thread=2 или thread=1, чтобы указать, какой сеанс использовать для вещей), и это полный кошмар, не говоря уже о последствиях для безопасности.

Единственный реальный способ сделать это - через бокс-браузер, пользователь сообщает браузеру, что данная вкладка и все ответвления используют один набор файлов cookie, а другая вкладка и все ответвления используют другой.

По сути, это не проблема, которая может быть решена веб-сайтами на практике.

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

Решения для одного браузера, которые должны работать сегодня:

  • CookieSwap 0.5.1 Появляется, чтобы разрешить "переключение состояний" различных наборов файлов cookie. Он не делает то, что нужно, чтобы иметь возможность просто волшебно просматривать их, но является частичным решением. Я не могу проверить это сам, потому что он еще не был портирован на FF3.1.
1 голос
/ 25 декабря 2008

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

Если я могу войти в обе мои учетные записи одновременно, что имеет приоритет, есть ли у меня объединение привилегий обеих учетных записей или только пересечение привилегий, которыми обладают обе учетные записи?

Если у меня будет объединение привилегий, смогу ли я комбинировать привилегии из этих нескольких учетных записей таким образом, чтобы дать мне слишком много власти? Что это означает для соответствия Sarbanes-Oxley?

В SQL наблюдается аналогичная проблема в отношении «ролей», которые являются группами привилегий. В стандартном SQL для данной учетной записи разрешено принимать несколько ролей, , но только по одной за раз . Это мешает вам использовать слишком много привилегий.

0 голосов
/ 12 декабря 2009

Вы можете сделать несколько сессий в Firefox, создав новые профили - запустите: firefox.exe -P, где вы можете настроить несколько профилей, которые будут иметь разные куки - вы можете запустить несколько сессий Firefox одновременно, используя firefox.exe -P "profileName" -no-remote. нет удаленного позволяет только 1 окно на сеанс, но также разрешает несколько сеансов одновременно.

0 голосов
/ 12 июня 2009

С тех пор как вы впервые написали вопрос, IE 8 был официально выпущен и имеет встроенную функцию, которая делает то, что вы хотите. В меню «Файл» нажмите «Новый сеанс». Откроется новое окно, в котором файлы cookie сеанса не будут передаваться исходному окну, что позволит вам одновременно входить на один и тот же сайт под разными именами входа.

http://blogs.msdn.com/ie/archive/2009/05/06/session-cookies-sessionstorage-and-ie8.aspx

0 голосов
/ 25 декабря 2008

Состояние cookie привязано к заголовку хоста ...

Используйте другое имя хоста или используйте его IP-адрес напрямую для подключения к сайту. В зависимости от сайта вы можете настроить несколько локальных псевдонимов хоста, что позволит вам войти в систему более одного раза, так как каждый псевдоним будет иметь свое собственное состояние файла cookie.

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

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