Как проверить пользователя с помощью запроса AJAX? - PullRequest
3 голосов
/ 27 января 2009

У нас есть веб-страница, которую мы предоставляем компаниям-партнерам через iFrame. IFrame содержит несколько файлов javascript, которые делают ajax-запросы к нашему серверу для получения данных. Для самого iFrame требуется ключ API, который привязан к домену партнера. Это предотвращает отображение iFrame, если он установлен в незарегистрированном домене. Однако было бы довольно просто скопировать содержимое и файлы javascript iFrame с зарегистрированного сайта и разместить их на незарегистрированном сайте.

В идеале мы хотели бы использовать ключ API, чтобы ограничить запросы Ajax и запретить нашему серверу предоставлять запрошенные данные для незарегистрированных сайтов. Однако, похоже, что переменная сервера HTTP_REFERER не установлена ​​для запросов Ajax. Как мы можем определить, с какого сайта поступил запрос? Является ли это возможным? Если нет, как мы можем предотвратить несанкционированный доступ?

Ответы [ 3 ]

1 голос
/ 27 января 2009

Полагаться на HTTP_REFERER - не тот путь. Вы хотите, чтобы веб-сайт вашего клиента использовал API для связи с вашим веб-сайтом по защищенной ссылке и получения временной строки сеанса, которая затем используется в качестве части исходного URL-адреса для IFRAME, как это делает Google (а не с реферером. )

Сделайте URL-адрес для IFRAME действительным в течение ограниченного времени, после чего вы увидите приятное сообщение о возвращении на страницу клиента, чтобы начать все сначала.

0 голосов
/ 27 января 2009

Проблема заключается в том, что iframe авторизован для определенного домена, поэтому мой API-ключ привязан к этому. Я следовал следующему руководству, чтобы сгенерировать ключи API.

https://ajax.dev.java.net/ajax/api-keys

Как вы думаете, полагаясь на переменную HTTP_REFERER, пользователи не смогут получить доступ к iframe? Sun утверждает, что Google использует этот метод для аутентификации API Карт Google.

Как только ключ API был аутентифицирован, я думаю, что подход с использованием cookie должен помочь. Спасибо!

0 голосов
/ 27 января 2009

Когда запрашивается iframe, вы можете сгенерировать уникальный идентификатор на вашем сервере, а затем установить его как cookie на клиенте. Каждый запрос AJAX должен содержать этот файл cookie. Храните удостоверения личности только в течение последнего часа или около того.

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

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