Как защитить данные веб-приложения?
Ни-ка-ких.
Всё, что отдаётся клиенту и там обрабатывается можно вскрыть, подсмотреть, отреверсинжинирить.
Единственное решение - сделать так, чтобы проще было заплатить вам, чем заморачиваться с собственными костылями. Если полноценный аналог вашего сервиса делается за два дня, то продукта у вас, можно считать, нет.
Если для реализации полноценного аналога нужно месяц, то никто в здравом уме заниматься этим не будет - проще заплатить, чем костылить и потом поддерживать.
Есть отдельная категория пользователей, которые упрутся, потратят на разработку эквивалент абонентской платы за несколько лет, но сделают своё. Или просто сделают какой-то очень ограниченный набор функционала, нужный именно им.
С первыми вы ничего поделать не сможете, это неадекватные люди, не ваша аудитория.
А вот если есть вероятность появления большого количества вторых, значит, вам нужно для них сделать тариф "Нищеброд" и они будут платить вам, вместо своих программистов.
Не отдавать в простом/удобном виде больше, чем нужно по минимуму.
Исключить возможность логически догадаться (например, нумерация объектов подряд позволяет из предположения что есть объекты 1 и 2 получить объекты 3-100500).
Ограничить число запросов в единицу времени. 
При подозрениях на автоматизированное скачивание данных - активировать Капчу.