Как сделать аутентификацию в букмарклет? - PullRequest
5 голосов
/ 22 августа 2011

Я бы хотел, чтобы мой букмарклет потребовал от пользователя входа в систему. Вот идея .... Я создаю iframe, чтобы пользователь мог войти в систему, и показываю информацию об кондиционере. Но я хотел бы получить некоторую информацию с сервера, например, я хотел бы знать, добавил ли пользователь эту страницу на мой сервер или нет. Итак, я хочу сделать вызов ajax, но из-за той же политики происхождения я не могу сделать это с помощью ajax. Итак, как я могу получить информацию из iframe?

История примерно такая:

Веб-пользователь -> пользователь нажимает на закладку -> если вошел в систему -> показать кнопку «добавить в избранное» -> пользователь нажимает кнопку добавления в избранное, URL-адрес отправляется на сервер, перезагрузите сервер.

Сеть пользователя -> пользователь нажимает на закладку -> если не вошел -> показать кнопку входа в систему -> войти в систему -> выполнить последовательность действий, как и раньше

Веб-сайт пользователя -> пользователь нажимает на закладку -> если зарегистрирован -> проверить, добавлен ли веб-сайт на сервер -> кнопка «без фаворита»

Как вы можете видеть, только iframe хранит информацию вошедшего в систему пользователя.

1 Ответ

1 голос
/ 23 августа 2011

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

Говоря о CSRF, большинство логинов - это просто пост с именем пользователя / паролем.Вы создаете простой <form> на своем сайте, который идентичен POST-запросу, необходимому для входа в систему.Используя JavaScript, вы можете вызвать .submit() в форме, которая перенаправит браузер на их новую аутентифицированную сессию.Фактически именно так работает эксплойт CSRF на основе POST (хотя обычно при атаке CSRF вы предполагаете, что браузер уже аутентифицирован.).

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

...