Нет идеального пути.
Если вы серьезно относитесь к безопасности, решение состоит в том, чтобы не публиковать ваш сервис JSON в мире. Сделайте его приватным и потребуйте, чтобы website.com и webpage.com отправляли частный внутренний запрос со своих серверов на ваши данные. Затем вы можете аутентифицировать все, что вы хотите, и секреты остаются в безопасности в коде своего сервера. В основном это решение по доверенности. (Одно приятное преимущество: ваши данные JSON теперь будут иметь то же происхождение, что и веб-сайт, а это значит, что вам не нужно делать взломы JSONP).
Если вы менее серьезно относитесь к безопасности и просто хотите усложнить, самые простые вещи, которые вы уже изложили. Проверьте Реферер. Этот заголовок может быть подделан, но это боль, и, надеюсь, большинство злоумышленников не подумают попробовать это. Также потребуйте пароль и / или API-ключ (они эквивалентны) и запутайте его внутри Javascript, чтобы было труднее получить доступ.