Как проверить пользователей моего приложения PHP? - PullRequest
7 голосов
/ 23 сентября 2010

При установке приложения на сервер клиента я хотел бы убедиться, что клиент (или будущий разработчик для них и т. Д.) Не копирует мое приложение и не размещает его на других доменах / серверах / локальных серверах.

Как я могу убедиться, что мое приложение работает на сервере, на котором я его установил? Я не хочу, чтобы сценарий имел существенную задержку при каждом запуске, поэтому я предполагаю, что метод «рукопожатия» не подходит.

Я думал, что скрипт может запрашивать страницу PHP на моем собственном сервере при каждом запуске. Это может отправить моему серверу информацию о сервере и доменное имя, которое мой сценарий может проверить по базе данных принятых клиентов. Если запрос недействителен, мой сервер обрабатывает мои детали, чтобы я мог их обработать. Это не должно замедлять работу сценария клиента, так как он не ожидает ответа, и все равно будет работать на его «недействительном» сервере, пока я не смогу исследовать это и свериться с ним лично.

Если это лучший метод (или если есть лучший), какой вызов PHP я должен сделать, чтобы запросить скрипт моего сервера? file_get_contents, curl и тому подобное, похоже, всегда получают ответ, который мне не нужен.

UPDATE

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

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

Оправдывает ли это использование такого скрипта? Если да, то cURL мой лучший вариант?

Ответы [ 7 ]

2 голосов
/ 23 сентября 2010

Любой проверочный код для проверки легко заменяется на return true;. Посмотрите на часто задаваемые вопросы на https://stackoverflow.com/tags/php/info:

Q. Могу ли я защитить свой PHP-код от кражи? Если да, то как?
О. Не существует эффективного технического решения для защиты, кодирования или шифрования исходного кода PHP. Есть много продуктов, которые предлагают некоторые уровни защиты, но все они могут быть сломаны со временем и усилиями. Ваш лучший вариант - это не техническое решение, а юридическое решение в форме лицензионного соглашения.

1 голос
/ 23 сентября 2010

SaaS - твой друг. Разместите приложение на своих собственных защищенных серверах и взимайте с клиентов плату за доступ к нему.

1 голос
/ 23 сентября 2010

Вы получаете юридическое соглашение и предъявляете иск всем.

0 голосов
/ 23 сентября 2010

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

OneОстерегайтесь данных, которые вы отправляете (и того, как вы их отправляете, т.е. надежно зашифровываете или нет), чтобы идентифицировать клиента, который незаконно использует ваш продукт, потому что он потенциально может быть использован для компрометации инфраструктуры вашего клиента или для шпионажа на вашемclient.

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

РЕДАКТИРОВАТЬ:
As poke написал в комментарии к вопросу, вы можете перенести части вашего кода за пределы программного обеспечения, установленного на сайте вашего клиента, на ваши серверы, но это может иметь неприятные последствия, если ваши серверы недоступны по какой-либо причине (например, для обслуживания).

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

0 голосов
/ 23 сентября 2010

Краткий ответ : Это невозможно.

Длинный ответ : Какую бы защиту вы ни добавили в свой код, она может быть легко удалена любым, имеющим некоторый опыт работы с PHP. Даже если код закодирован чем-то вроде ionCube или Zend Guard, его тоже можно относительно легко декодировать.

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

0 голосов
/ 23 сентября 2010

По-моему, стоит проверить некоторые расширения Joomla, которые делают это.Существует несколько различных реализаций, некоторые проверяют домен и проверяют его перед выполнением, большинство шифруются вместе с проверкой домена.Я помню расширение URL Sakic, используемое для этого.Есть еще несколько коммерческих расширений, которые используют то же самое.Кроме того, я не могу придумать другого пути. Вероятно, еще одна хорошая идея - иметь хорошую лицензию и хорошего адвоката ....

0 голосов
/ 23 сентября 2010

Вы можете закодировать его и жестко закодировать файл лицензии, который позволит ему работать только на домене, для которого он предназначен (например, использовать ioncube или zend для кодирования файла, который проверяет, является ли HTTP-хост HOST предполагаемым доменом, без выполнениярукопожатие).Затем вы можете сделать этот файл обязательным для всех остальных файлов (если все закодировано).

...