показать маркеры карты Google с php - PullRequest
1 голос
/ 21 декабря 2009

Привет всем!

Я работаю над проектом карты Google, в котором пользователь может ввести адрес и получить результаты соседних ресторанов, нанесенных на карту Google. Пока проблем нет. Я создал вызов ajax, где бэкэнд выводит и xml, а затем с помощью jquery создаю маркеры.

Но теперь к моей проблеме.

С этим решением ajax любой может легко с помощью firebug или другого инструмента для веб-разработчиков получить доступ к XML-результату, который содержит все названия, широты и долготы ресторана, который у меня есть. Я хочу как-то защитить данные, которые отображаются.

Как я могу это сделать?

Как я могу построить маркеры карты Google с помощью php без jquery? Можно ли это сделать?

спасибо заранее!

Ответы [ 4 ]

4 голосов
/ 21 декабря 2009

Google Maps Маркеры для интерактивной карты (с использованием объекта GMap2 в API) должны создаваться на стороне клиента (в Javascript) и поэтому уязвимы для обратного инжиниринга данные.

Если вы хотите сгенерировать данные карты на сервере, вы ограничены статической функциональностью на клиенте. Вы можете использовать Google Static Maps API для создания URL-адреса на сервере, который включает информацию о маркерах, которые вы хотите отобразить, и регион, который будет отображать статическая карта. Этот подход жертвует некоторой практичностью для клиента (без динамического масштабирования, панорамирования, всплывающих окон маркеров и т. Д.) Для защиты ваших данных.

N.B. Решительный инженер все еще сможет получить доступ к вашим данным (хотя и с некоторыми трудностями):

  • Анализ URL-адреса ваших статических карт для определения региона карты
  • Анализ данных изображения для поиска маркеров и определения их местоположения.
3 голосов
/ 21 декабря 2009

Единственный способ защитить данные - визуализировать карту перед отправкой в ​​браузер. Это приведет к удалению большинства или всех интересных функций карт Google, так как вам придется отображать только изображение.

Любые данные, к которым есть доступ с карт Google, доступны кому-либо с firebug.

1 голос
/ 21 декабря 2009

Некоторые вещи, которые вы можете сделать, чтобы затруднить жизнь человеку, пытающемуся получить ваши данные:

В коде вашего сервера проверьте заголовки, чтобы увидеть, пришел ли запрос с вашей клиентской страницы. Если запрос пришел откуда-то еще, ничего не вернуть.

Кодировать данные, которые вы возвращаете с сервера. Расшифруйте его как можно позже в своем клиентском коде, чтобы в любой момент времени у вас был только открытый текст для одного ресторана в переменных Javascript. Таким образом, кто-то с Firebug может одновременно читать только один ресторан.

Пусть ваш сервер возвращает только ограниченное количество мест одновременно, даже если кто-то использует Firebug для изменения параметров запроса, чтобы он запрашивал рестораны в пределах огромного радиуса. Таким образом, они могут только захватить зашифрованный текст сразу для такого количества мест, чтобы вставить их в собственный код, в который они поместили копию вашей функции декодирования.

Вместо того, чтобы захватывать зашифрованный текст даже для такого ограниченного количества мест в одном вызове, отправьте несколько запросов, каждый из которых возвращает очень небольшое количество мест с дополнительным параметром, указывающим, какой кусок ресторанов запрашивается.

Это не надежно, но для того, чтобы кто-то захватил значительные объемы ваших данных, им потребовалось бы много времени или потребовались довольно сложные методы атаки, такие как подмена заголовков запросов.

0 голосов
/ 21 декабря 2009

Простой ответ - вы не можете.


Длинный ответ

Вы могли бы нарисовать наложение изображения на стороне сервера, вроде Наложение Wikipedia на картах Google , но я не думаю, что оно того стоит.

Вы также можете сохранить ключ в сеансе php и передать его в JavaScript при начальной загрузке страницы, а затем не возвращать данные, если данные не запрашиваются через Ajax с правильным ключом (который уникален для сеанса браузера). Это защитит вас от простых ботов, которые не поддерживают куки. Больше беспорядка, а затем получить.

Также помните, что если бы кто-то написал конкурирующий сайт, используя ваш сервер в качестве источника данных, ему все равно пришлось бы туннелировать запросы Ajax через их собственный сервер, потому что вы не можете выполнять междоменные запросы с JavaScript, поэтому вы бы увидели много запросов с того же IP (их веб-сервера) в ваших веб-журналах, и вы можете легко запретить этот IP. (Если они не загружают все сразу, а затем подают со своего собственного сервера).

И действительно ли это необходимо? Не похоже, чтобы рестораны были совершенно секретными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...