У меня есть веб-сервис, который выполняется через javascript (jquery) для извлечения данных из базы данных. Я хотел бы убедиться, что только мои веб-страницы могут выполнять эти веб-методы (то есть я не хочу, чтобы люди выполняли эти веб-методы напрямую - они могли бы узнать URL, посмотрев, например, исходный код javascript).
Я планирую добавить параметр «Ключ» ко всем веб-методам. Ключ будет храниться на веб-страницах в скрытом поле, и его значение будет динамически устанавливаться веб-сервером при запросе веб-страницы. Значение ключа будет действительным, скажем, в течение 5 минут. Таким образом, когда необходимо выполнить веб-метод, javascript передаст ключ веб-методу, и веб-метод проверит, что ключ действителен, прежде чем делать то, что ему нужно.
Если кто-то захочет выполнить веб-методы напрямую, у него не будет ключа, который сделает его неспособным выполнить их.
Что вы думаете об этом? Есть ли лучшее решение? У вас есть проблемы с моим решением?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: за то, что я делаю, посетители не вошли в систему, поэтому я не могу использовать сеанс. Я понимаю, что если кто-то действительно хочет сломать это, он может проанализировать html-код и получить значение скрытого поля, но ему придется делать это регулярно, так как ключ будет меняться каждые x минут ... что, конечно, возможно, но надеюсь, будет боль для них.
РЕДАКТИРОВАТЬ: то, что я делаю, это веб-приложение (в отличие от веб-сайта). Данные извлекаются через веб-методы (+ jquery). Я хотел бы запретить кому-либо создавать свои собственные веб-приложения, используя мои данные (что они могли бы, если бы они могли выполнять веб-методы). Очевидно, это было бы для них риском, так как я мог изменить веб-методы в любое время.
Я, вероятно, просто выберу опцию реферер. Это не идеально, но это легко реализовать. Я не хочу тратить на это слишком много времени, так как некоторые из вас сказали, что если кто-то действительно хочет сломать это, они все равно найдут решение.
Спасибо.