Как защитить продаваемое веб-приложение?
Первое, что приходит на ум - ключ активации/серийный номер привязанный к домену, на котором будет установлено ваше приложение.
Если приложение не планируется использовать в локальных сетях, а только в интернете, то можно использовать следующий алгоритм:
1. Микроскопическая часть программы типа кусочка ядра, которая важна для функционала, выносится на кластер/пул ваших серверов. Там же и обрабатывается
2. Для каждого клиента(домена) генерируется свой кусок данных.
3. На сайте инклудится файл с результатами расчетов с вашего кластера, в запросе при этом, передаются переменные сайта типа его доменного имени. 
Чем больше клиентов, тем больше вероятность нарваться на проблему недоступности ваших серверов, которая может подорвать репутацию программы. Но при пуле из 3-х серверов, расположенных на разных хостингах в разных странах, вероятность проблем уменьшается во много раз. 
Разумные люди сейчас раскритикуют этот метод и будут абсолютно правы. Даже спорить не буду, практика порочная. Но метод рабочий и вполне подходит под ваши нужды.