2014-07-07 3 views
1

В настоящее время я работаю над небольшой библиотекой JavaScript, которая делает запросы к веб-службе REST. Поскольку стороне сервера необходимо регистрировать входящий запрос для измерения количества запросов, я хочу как-то его защитить. Библиотека очень похожа на API Карт Google. Итак, теперь мой вопрос: есть ли способ защитить его, а затем просто добавить ключ API к запросам библиотек? Как я могу гарантировать, если это возможно, что только «правильный» клиент использует ключ? Я думаю, я мог бы сравнить URL-адрес реферера с набором действительных URL-адресов, но это может быть подделано вправо? Имейте в виду, что невозможно использовать метод проверки чужих (facebook, google, twitter и т. Д.), Так как он должен работать без ввода пользователя.Защита JavaScript API

Приветствие, Daniel

+0

Да, URL-адрес реферера может и будет обрабатываться и не должен использоваться ни для чего связанного с безопасностью. – reto

+0

Определите, что именно означает «безопасный». Является ли API для общедоступного веб-сайта, который может посетить любой человек? Тогда по определению вы ничего не можете сделать. Любой пользователь может получить доступ к данным в любое время из любого места (общедоступный веб-сайт), или у вас есть какое-то ограничение. У вас не может быть обоих. – deceze

+0

Спасибо. Ну, мне нужен способ идентифицировать клиента на стороне сервера для измерения запроса API. Не нужно быть «безопасным». Извините, если я перепутал это. –

ответ

1

Порядочный RESTful подход будет требовать Authorization заголовка, который должен подаваться клиентом, соответствием некоторых схем, что ваш сервер будет принимать (см Basic Access authentication в качестве примера). Если вы только хотите подтвердить, что ваш клиент является тем, кто делает запрос, вам, вероятно, не нужен слишком сложный механизм авторизации.

+2

Я не вижу, как это нельзя подделать. Если я ставлю логин: пароль в исходном коде библиотеки, все могут видеть/подделывать его или нет? –

+1

Итак, вы создаете публичную библиотеку javascript, которая обменивается данными с вашим личным сервером, и вы не хотите, чтобы клиенты, которые использовали вашу библиотеку, не запрашивали запрос? Как упоминалось в комментарии @ deceze, если это общедоступный сервер, вы ничего не можете сделать, чтобы люди не обращали на него запросы, поэтому не хотите ли вы измерить количество запросов, включая их? Как вы упомянули, проверяя реферера, который заставляет меня думать, что есть только один или несколько клиентов, которых вы ожидаете получить от? Извините, я еще не совсем понял вопрос. –