2010-09-22 1 views
7

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

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

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

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

UPDATE

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

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

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

+3

Поскольку php является открытым исходным кодом, любая проверка может быть легко удалена. Однако может быть возможно переместить ключевые части программного обеспечения в собственный PHP-модуль (или аналогичный), который тогда не открывается. Таким образом, скрипт (открытый) всегда должен использовать модуль, который также выполняет проверку. Во всяком случае, это именно то, что я думаю, что может быть возможно, хотя я не уверен, действительно ли это будет работать (или даже стоит усилий). – poke

+0

@poke: «открытый исходный код» на нашем жаргоне обычно означает «свободно доступный источник, которому способствуют доступ (и, возможно, изменения)», что здесь не совсем так. Он раскрыт источник вашим клиентам (которые в этом случае платят за него) наверняка, а источник C самого языка PHP является открытым исходным кодом. Большинство людей здесь, и я получаю то, что вы пытаетесь сказать, но ИМХО это несколько плохой выбор слов. – Wrikken

+0

@Wrikken: Ну, открытый исходный код означает, что источник открыт и полностью видим, что, очевидно, имеет место с php (по крайней мере, для тех, у кого есть доступ к серверу). Свободное программное обеспечение не всегда является открытым исходным кодом, а открытый источник не всегда свободен. Это детали лицензирования, которые часто путаются. – poke

ответ

2

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

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

-2

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

+1

Это можно легко обойти. -1 – NullUserException

0

imo его стоит проверить некоторые расширения joomla, которые это делают. Там несколько различных реализаций, некоторые проверяют домен и проверяют его перед выполнением, большинство из них зашифрованы вместе с проверкой домена. Я помню, что для этого было использовано расширение sylic sakic. Есть еще несколько коммерческих расширений, которые используют одно и то же. Кроме того, я не могу думать о другом пути. Вероятно, еще одна хорошая идея - иметь хорошую лицензию на месте и хороший адвокат.

0

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

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

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

1

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

0

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

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

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

EDIT:
Как poke писал в вопросе комментарий, вы можете перемещать части вашего кода за пределами программного обеспечения, установленного на месте вашего клиента к серверам, но это может иметь неприятные последствия, когда ваши серверы недоступны по какой-то причине (например, для поддержания).

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

1

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

+0

+1 Это способ пойти, если вы предлагаете услугу, превращение вашего приложения в платный API будет единственным способом гарантировать, что ваше программное обеспечение не было взломано и/или перераспределено. –

+0

Это решение _a_, но сетевые накладные расходы/латентность сделают это совершенно неработоспособным для большинства проектов PHP. – Wrikken

+0

@Wrikken Я думаю, вы неправильно поняли. Я предлагаю, чтобы он предлагал свою полную заявку на своих частных серверах, а затем взимал ежемесячную плату за подписку на ее использование. Например, salesforce.com, mint.com, flickr.com и т. Д. Нет лишних расходов или латентности, кроме того, что вы обычно получаете на любой веб-странице. –

Смежные вопросы