Labutin
@Labutin
Web-разработчик

Как максимально усложнить нежелательные вызовы REST API?

Представим, что есть сервис.
Веб морда очень простая - ввод параметров (2-3 параметра) и кнопка submit. Идет AJAX запрос на сервер и в ответ JSON с результатами расчетов.
Веб морда ценности не представляет. Самое интересное - это способ расчетов на сервере.
При таком подходе легко написать клон морды и дергать готовый чужой REST API и выдавать сервис за свой.
Собственно вопрос - как усложнить жизнь вот таким плагиаторам?
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ответы на вопрос 6
mainameiz
@mainameiz
Full-stack web-developer
Ну очевидно же что любыми способами, которыми защищаются от ботов, т.е. капчей например
Ответ написан
Комментировать
@jaymecd
JaymecD
Капча на API не поможет не очень помогут. Токены вам в помощь, посмотрите Json Web Tokens.
Ответ написан
Комментировать
lam0x86
@lam0x86
Почему бы не проверять HTTP referer?
Ответ написан
RussellKvashnin
@RussellKvashnin
WEB-developer
Есть золотое правило системного администрирования:
"Запрещено все то, что не разрешено".
Думаю намек понят.
Ответ написан
Комментировать
suguby
@suguby
программист, python, django, mysql, git, hg, linux
На морду отдавать сгенеренную куку и некий сгенеренный параметр. Требовать от морды возврата и куки и параметра формы. А у себя хранить параметр, отданный на эту форму для этой куки и проверять что пришло с формы. Параметр и кука - абсолютно не связанные хэши. Ктт.
Ответ написан
Комментировать
@aleksey_k
То, о чем вы пишете, очень похоже на CSRF. Есть несколько методов защиты от этого, в интернете есть примеры. Самый простой - проверка Referrer, чуть сложнее - генерировать CSRF-токен, который будет передаваться вместе с формой, и который будет знать сервер. Если форма фейлится при проверке этого токена - значит кто-то обманывает.
Если же используете AJAX - там нужно будет использовать одноразовый токен, который будет обновляться при ответе с сервера.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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