Первое, что мешает ботам украсть ваши данные, это не технология, это законно. Во-первых, убедитесь, что у вас есть правильный язык в Условиях использования вашего сайта, что то, что вы пытаетесь предотвратить, фактически запрещено и оправдано с юридической точки зрения. Во-вторых, убедитесь, что вы разрабатываете свою техническую стратегию с учетом правовых вопросов. Например, в США, если вы помещаете данные за барьер аутентификации и злоумышленник крадет их, это, вероятно, является нарушением закона DMCA . В-третьих, найдите адвоката, который может проконсультировать вас по вопросам ИС и DMCA ... приятных людей в StackOverflow недостаточно. : -)
Теперь о технологии:
Разумным решением является требование аутентификации пользователей, прежде чем они смогут получить доступ к вашим конфиденциальным вызовам Ajax. Это позволяет вам просто отслеживать использование ваших вызовов Ajax для каждого пользователя и (вручную или автоматически) удалять учетную запись любого пользователя, который делает слишком много запросов в определенный период времени. (или слишком много общих запросов, если вы пытаетесь защититься от подобного подхода).
Этот подход, конечно, уязвим для опытных ботов, которые автоматически регистрируют новых «пользователей», но с достаточно хорошей реализацией CAPTCHA довольно сложно создать такого рода бота. (см. раздел «Обход» в http://en.wikipedia.org/wiki/CAPTCHA)
Если вы пытаетесь защитить общедоступные данные (без аутентификации), тогда ваши возможности гораздо более ограничены. Как отмечалось в других ответах, вы можете попробовать ограничения на основе IP-адресов (и запустить из-за больших корпоративных прокси-пользователей), но искушенные злоумышленники могут обойти это, распределяя нагрузку. Есть также сложное программное обеспечение, которое отслеживает такие вещи, как время запроса, шаблоны запросов и т. Д., И пытается обнаружить ботов. Покерные сайты, например, тратят на это много времени. Но не ожидайте, что такие системы будут дешевыми. Одна простая вещь, которую вы можете сделать, - это добывать ваши веб-журналы (например, используя Splunk ) и находить первые N IP-адресов, попавших на ваш сайт, а затем выполнять обратный IP-поиск по ним. Некоторые из них будут законными корпоративными или интернет-прокси. Но если вы узнаете доменное имя конкурента в списке, вы можете заблокировать его или проконсультироваться с юристами.
В дополнение к защите до кражи, вы также можете подумать о вставке «медового котла»: намеренно фальсифицированной информации, которую вы можете отследить позже. Так, например, производители карт улавливают плагиат: они вставляют в свои карты фальшивую улицу и видят, какие другие карты показывают ту же фальшивую улицу. Хотя это не мешает решительным людям высосать все ваши данные, оно позволяет позже выяснить, кто повторно использует ваши данные. Это может быть сделано путем встраивания уникальных текстовых строк в текстовый вывод, а затем поиска этих строк в Google позже (при условии, что ваши данные можно повторно использовать на другом общедоступном веб-сайте). Если ваши данные представляют собой HTML или изображения, вы можете включить изображение, которое указывает на ваш сайт, и вы можете отслеживать, кто его загружает, и искать шаблоны, которые вы можете использовать, чтобы уничтожить халявщиков.
Обратите внимание, что подход шифрования javascript, отмеченный в одном из других ответов, не будет работать для сеансов без аутентификации - злоумышленник может просто загрузить javascript и запустить его так же, как и обычный браузер. Мораль истории: общедоступные данные по существу неоправданны. Если вы хотите защитить данные, поместите их за барьер аутентификации.
Это очевидно, но если ваши данные доступны для публичного поиска поисковыми системами, вам обоим понадобится решение, отличное от AJAX (Google не будет читать ваши данные ajax!), И вы захотите пометить эти страницы NOARCHIVE , поэтому ваши данные не отображаются в кэше Google. Вам также, вероятно, понадобится белый список IP-адресов искателей поисковых систем, которые вы разрешаете размещать на страницах, которые можно сканировать в поисковых системах (вы можете работать с Google, Bing, Yahoo и т. Д., Чтобы получить их), иначе злоумышленники могут просто выдать себя за другого Google и получите ваши данные.
В заключение я хочу повторить @kdgregory выше: убедитесь, что угроза достаточно реальна, чтобы она того стоила. Многие компании переоценивают заинтересованность других людей (как законных клиентов, так и гнусных игроков) в их бизнесе. Может случиться так, что у вас странный случай, когда у вас есть особенно важные данные, их особенно важно получить, они должны быть общедоступными без аутентификации, и ваши юридические ресурсы будут ограничены, если кто-то украдет ваши данные. Но все это вместе, по общему признанию, необычный случай.
P.S. - другой способ думать об этой проблеме, которая может или не может применяться в вашем случае. Иногда легче изменить работу ваших данных, что устраняет необходимость их защиты. Например, можете ли вы каким-либо образом связать свои данные со службой на вашем сайте, чтобы данные не были очень полезны, если они не используются в сочетании с вашим кодом. Или вы можете встроить в нее рекламу, чтобы везде, где она показывается, вам платили? И так далее. Я не знаю, применимо ли какое-либо из этих смягчающих мер к вашему делу, но многие компании нашли способы бесплатно раздавать вещи в Интернете (и поощрять, а не предотвращать широкое перераспределение) и по-прежнему зарабатывать деньги, так что гибридный бесплатный / Платежная стратегия может (или не может) быть возможной в вашем случае.