Невозможно, IMO, без полностью размещенной среды. Оказавшись на сервере клиента, они получают доступ, тогда это вопрос решимости и ресурсов. Я говорю это потому, что даже мощные средства защиты лицензий для собственного кода постоянно подрываются, просто Google видит все взломанные ключи.
Если вы действительно хотите защитить свой код, использование родных языков или запутанных версий (по крайней мере) только изменит степень сложности, но не уменьшит риск.
Защита базы данных еще сложнее. Даже для двигателей, которые допускают полное шифрование БД, требуется ключ для запуска / подключения к БД. Если это является частью вашего веб-приложения или находится в руках клиента, они имеют полный доступ. DB Encryption действительно для защиты от хакеров, а не от ваших клиентов.
Пиратство становится юридическим, а не техническим вопросом.