Как обезопасить соединение между клиентом и серверов (RESTful API)?

Прошу помощи у знающих людей, ситуация такая:
Есть сервер на PHP. К этому серверу постоянно обращаются несколько клиентов (2-3 сайта, в дальнейшем больше). Для связи клиент-сервер я выбрал архитектуру REST и у меня сразу возник вопрос, как разрешить обращаться к серверу только проверенным клиентам.

Схема работает следующим образом: я посылаю данные с формы на сервер, сервер проверяет от кого пришли данные и если клиент проверенный, то данные записываются в БД а клиент получает ответ. Подойдёт ли для этой схемы протокол OAuth и какую лучше использовать версию протокола? А может лучше воспользоваться обычной HTTP аутентификацией?

Ещё мне пришёл в голову следующий вариант: на клиенте есть публичный и приватный ключ. Вместе с данными на сервер отправляется хэш данных с приватным ключём. Т.к. сервер знает кто прислал ответ, он сверяет 2 хэша и записывает инфу в бд если хэши совпадают. Есть ли смысл использовать такую защиту?

Вопросов очень много, буду рад вашим мнениям. Большое спасибо.
  • Вопрос задан
  • 2470 просмотров
Пригласить эксперта
Ответы на вопрос 2
awMinor
@awMinor
OAuth подразумивает разграничение доступа и привелегий. Я думаю у вас все клиенты имеют одинаковые права, им ненужно постоянно запрашивать доступ так как они не передвигаются. Я думаю имеет смысл каждому просто сгенерировать хэш и не мучатся. Просто каждый запрос отправлять данный ключ.
Ответ написан
AMar4enko
@AMar4enko
Самый главный вопрос - вы же используете HTTPS?
Без него все ваши хеши можно выловить сниффером трафика.
Что подразумевается под клиентом? Браузер напрямую на ваш сервер? Браузер через сервер стороннего сайта на ваш сервер?
Если браузер, то ваши хеши будут в открытом виде. Можно их угнать и завалить ваш API мусором.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы