При запросах к API из скриптов на бэкенде можно легко подменить Referer и прописать любой, либо вообще не прописывать его. То есть нет практически никакого смысла привязывать токен к запросам с определенного сайта, потому что это легко подменяется.
Проверить Referer можно так: echo $_SERVER['HTTP_REFERER'];
в этом и дело, что бы пользователь не участвовал в этом.
токен выдаётся на один сайт. А если пользователь сам будет указывать адрес сайта - то он сможет разместить АПИ на нескольких сайтах используя один токен.
Николай, автоматически Referer подставится только если запрос будет реализован на стороне клиента через AJAX. Если запросы к API будут реализованы на серверных скриптах, на том же PHP, то можно прописать любой Referer, либо вообще не отправлять его. То есть в таком случае если пользователь сам не будет прописывать свой сайт в Referer, то это никак не реализовать. Участие пользователя в любом случае потребуется. А на счет того, что при таком раскладе зная привязку сайта к токену любой сможет делать запросы этого к сожалению никак не избежать.
Николай, в общем сама по себе эта идея не совсем правильная. Никто не привязывает токен API к сайту, потому что Referer легко подменяется и в этом нет практического смысла.
Николай, ну вот это уже другой вопрос. Я к сожалению серьезных API, таких, чтобы надо было прописывать ограничение количества запросов, не писал, но думаю если погуглите на эту тему, то легко найдете нужные вам мануалы. Вот например есть похожий вопрос - Чем и как ограничивать количество запросов к API?
Ну а если вы имеете ввиду более глобальные ограничения, типа ограничить количество запросов просто до 100 в сутки например, то это можно и на обычной БД считать просто делая в нее записи счетчика.