Как обезопасить сайт и внутренний API? - PullRequest
3 голосов
/ 17 января 2012

Извините, если заголовок простой идиотский по отношению к содержанию.

Мы обсуждали модель для сайта с интенсивным взаимодействием, в котором будетбыть

site.com
api.site.com

на одном сервере.site.com работает на PHP, а api.site.com - на альтернативной веб-платформе.Один и тот же или разные серверы отвечают на два домена.

Визуализированный сайт делает AJAX-вызовы на api.site.com.


Обеспечить это легко, если приложение было «полностью PHP»,Функция сеанса может запретить HTTP-запросы, которые позволяют:

  • незарегистрированному незнакомцу получить доступ к данным пользователя
  • законно зарегистрированному пользователю запрашивать данные другого пользователя

Вопрос 1: Как вы защищаете внутренний API, чтобы мы могли быть уверены в легитимности каждого запроса?


Я гуглилup AJAX и та же политика происхождения, но я не продвинулся далеко с ними.

Я думаю о случайно сгенерированных «токенах», которые будут подтверждены обоими доменами.

Вопрос 2: Есть ли конкретное название для этой модели ?

1 Ответ

1 голос
/ 17 января 2012

Вы должны взглянуть на JSONP. У jQuery есть хороший пример: http://api.jquery.com/jQuery.getJSON/

Вам нужно добавить jsoncallback =? на URL, чтобы заставить его работать.

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?"

С этим вы можете избежать политики Одинакового происхождения

jsoncallback будет меткой времени, которая должна быть echo-ed скриптом PHP, который выводит JSON следующим образом:

jsonp1277656587731(/* rest of the JSON here */);

С числом здесь конечно являющейся случайно сгенерированной строкой или отметкой времени в случае jQuery JSONP

...