Как защитить исходный код PHP? [Дубликат]

Это решение, которое я использую:

function resolve(path, obj=self, separator='.') {
    var properties = Array.isArray(path) ? path : path.split(separator)
    return properties.reduce((prev, curr) => prev && prev[curr], obj)
}

Пример использования:

// accessing property path on global scope
resolve("document.body.style.width")
// or
resolve("style.width", document.body)

// accessing array indexes
// (someObject has been defined in the question)
resolve("part3.0.size", someObject) // returns '10'

// accessing non-existent properties
// returns undefined when intermediate properties are not defined:
resolve('properties.that.do.not.exist', {hello:'world'})

// accessing properties with unusual keys by changing the separator
var obj = { object: { 'a.property.name.with.periods': 42 } }
resolve('object->a.property.name.with.periods', obj, '->') // returns 42

// accessing properties with unusual keys by passing a property name array
resolve(['object', 'a.property.name.with.periods'], obj) // returns 42

Ограничения:

  • Нельзя использовать скобки ([]) для индексов массива, хотя указание индексов массива между токеном разделителя (например, .) отлично работает, как показано выше.
62
задан Ken 4 December 2008 в 00:00
поделиться

11 ответов

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

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

Разработка EULA является юридическим вопросом, а не вопросом кодирования , Вы можете начать с чтения некоторого текста EULA для продуктов и веб-сайтов, которые вы используете. Вы можете найти интересные подробности!

Создание проприетарной лицензии является очень гибким и, вероятно, предметом, выходящим за рамки предполагаемого объема StackOverflow, поскольку это не совсем о кодировании.

Некоторые части EULA, которые приходят на ум:

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

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

edit: Если этот проект не может оправдать расходы из них:

34
ответ дан Bill Karwin 24 August 2018 в 05:47
поделиться
  • 1
    Как я уже сказал в своем первом посте, я не хочу использовать обфускацию, потому что в этом нет никакого смысла. На самом деле, единственная причина, по которой я вижу использование обфускации, не имеет ничего общего с тем, чтобы другие люди не использовали сценарий, не платя. Обфускация может быть приятной, если вы хотите, чтобы ваши клиенты не испортили ваш код, а затем «заставили вас». для их поддержки. Но на самом деле это не проблема. Что касается EULA, это в основном то, что сказал Эран Гальперин, и мой ответ на него также применим здесь. – Ricardo Amaral 3 December 2008 в 03:27
  • 2
    Консультирование юриста для моих нужд было бы безумным. Я не могу позволить себе что-то подобное, и мой продукт не продаст столько LOL. Это простой продукт, но я хотел как-то защитить его. – Ricardo Amaral 3 December 2008 в 04:05
  • 3
    Хорошо, справедливо. Я знаю, что небольшой проект не может этого себе позволить, я не знал, работаете ли вы в крупной компании или нет. – Bill Karwin 3 December 2008 в 04:08
  • 4
    Вы правы, я должен был сказать это :) – Ricardo Amaral 3 December 2008 в 04:10
  • 5
    @BillKarwin, мне интересно, как на одном дыхании вы говорите: «Люди, которые разорвут вас, не являются вашей целевой аудиторией», и затем «создать бизнес-модель с размещенными данными». - т. е. создать бизнес-модель, где люди по существу не могут разорвать вас. Я слышу это чувство снова и снова, и я просто не понимаю. – kalenjordan 2 March 2014 в 02:50

, на мой взгляд, но на всякий случай, если ваша программа php-кода написана для автономной модели ... лучшие решения: c) Вы можете обернуть php в контейнер, например Phalanger (.NET). поскольку все знают, что это тесно связано с системой, особенно если ваша программа предназначена для пользователей Windows. вы просто можете сделать свой собственный алгоритм защиты на языке программирования Windows, например .NET / VB / C #, или что вы знаете в .NET prog.lang.family.

1
ответ дан achy 24 August 2018 в 05:47
поделиться

Я не смотрел исходный код VBulletin за некоторое время, но способ, которым они занимались в 2003 году, заключался в том, чтобы встроить вызов на свой сервер внутри кода. IIRC, он был на очень длинной строке кода (например, 200-300 + символов долго) и был разбит на несколько конкатенаций строк и т. Д.

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

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

6
ответ дан Alarion 24 August 2018 в 05:47
поделиться
  • 1
    Я вижу ... Это легко отредактировано из кода. Но спасибо за понимание. – Ricardo Amaral 3 December 2008 в 04:16
  • 2
    действительно, если вы знаете, что ищете. Мой друг нашел его и указал на меня. Это было не так легко найти и потребовалось несколько минут, чтобы мы оба поняли, что это за код. :) – Alarion 3 December 2008 в 04:20
  • 3
    Но ты это нашел! Если кто-то действительно этого захочет, они найдут его в конце концов ... – Ricardo Amaral 3 December 2008 в 04:28
  • 4
    Да, они могут это найти, но то, что вы можете сделать, также разбрызгивает его через приложение для вызова этой функции время от времени. Дайте им больше работы, чтобы она работала. – Justin Yost 3 December 2008 в 07:19
  • 5
    в точку. Если вы не хотите запутывать или компилировать или иначе «скрывать», ваш исходный код, вы действительно можете сделать еще немного. Есть сделка, с которой вам приходится иметь дело. Либо оставить исходный код открытым, а риск потерять больше продаж, или запутаться, и hopefully получить больше продаж. – Alarion 3 December 2008 в 15:13

Вы можете использовать компилятор php:

Roadsend

phc

7
ответ дан Clark Superman 24 August 2018 в 05:47
поделиться
  • 1
    Похоже, хороший инструмент, но FastCGI держит меня немного назад, и на форумах Roadsend они заявили, что, например, на phpBB, его нужно сначала выполнить без компиляции, чтобы базы данных были созданы, и файл config.php был создан. Я рискую, что мой код может работать неправильно. – Ricardo Amaral 3 December 2008 в 04:09
  • 2
    Обе ссылки идут в одно и то же место. – Rizwan Kassim 3 December 2008 в 05:09
  • 3
    исправлено. По-видимому, проблема не связана с http: // перед ссылкой. – grepsedawk 3 December 2008 в 23:54

Они распространяют свое программное обеспечение под лицензией . Закон защищает их права и не позволяет своим клиентам перераспределять источник, хотя нет реальной проблемы с этим.

Но, как вы, возможно, хорошо знаете, нарушение авторских прав (пиратство) программных продуктов является довольно распространенное явление .

1
ответ дан Eran Galperin 24 August 2018 в 05:47
поделиться
  • 1
    Да, но я знаю, что они не просто применяют проприетарную лицензию. Я просто не знаю подробностей ... Это то, что я хочу знать, наряду с плюсами и минусами. Проблема в том, что я не могу сделать то же самое с моим программным обеспечением по разным причинам ... Один из них - это то, что я один человек, а не компания. У меня нет власти и ресурсов, необходимых для судебного преследования кого-либо. И в моей стране потребовалось бы время, чтобы подать в суд на кого-то по этому поводу ... – Ricardo Amaral 3 December 2008 в 03:27

Zend Guard не поддерживает php 5.5 и легко реверсируется, идите для http://www.ioncube.com для обфускации. http://www.phplicengine.com может лицензировать сценарии удаленно или локально.

0
ответ дан Igdrazil 24 August 2018 в 05:47
поделиться

См. наш SD-Obfuscator . Обрабатывает огромные системы файлов PHP. На сервере PHP нет требований времени выполнения. Нет дополнительных дополнительных затрат времени.

[EDIT май 2016]. В недавнем ответе было отмечено, что Zend не обрабатывает PHP5.5. SD-обфускатор PHP PHP.

0
ответ дан Ira Baxter 24 August 2018 в 05:47
поделиться

Вам нужно учитывать ваши цели:

1) Вы пытаетесь запретить людям читать / изменять ваш код? Если да, вам понадобится инструмент обфускации / шифрования. Я использовал Zend Guard с хорошим успехом.

2) Вы пытаетесь предотвратить несанкционированное перераспределение вашего кода? Лицензия EULA / proprietary предоставит вам юридическую силу, чтобы предотвратить это, но на самом деле не остановит ее. Схема ключа / активации позволит вам активно контролировать использование, но может быть удалена, если вы также не зашифруете свой код. Zend Guard также имеет возможности блокировать конкретный скрипт для конкретной клиентской машины и / или создавать временные версии кода, если это то, что вы хотите сделать.

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

Если вы не подготовлены / не можете предпринять юридические действия для защиты своего программного обеспечения, и вы не хотите шифровать / обфускации, ваши варианты: a) Отпустите его с помощью EULA, чтобы у вас была юридический вариант, если вам когда-либо понадобится, и надеяться на лучшее, или б) рассмотреть вопрос о том, может ли лицензия с открытым исходным кодом быть более подходящей и просто разрешить перераспределение.

14
ответ дан Jim OHalloran 24 August 2018 в 05:47
поделиться
  • 1
    Предоставляет ли Zend Guard возможность обфускации только ? Я загрузил его, и я играю с ним - он, кажется, позволяет вам кодировать и обфускации, но не просто obfuscate ? – kalenjordan 2 March 2014 в 02:41

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

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

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

0
ответ дан qualbeen 24 August 2018 в 05:47
поделиться

Итак, позвольте мне видеть, мы хотим показать адам и канун, есть какой-то запретный плод в дереве, и мы бы хотели, чтобы они не ели ...

Как насчет того, чтобы иметь ангела с огненным мечом?

  1. Может показаться наивным, и я не знаю, что делает ваше приложение на самом деле, но как насчет обширного использования включает?
  2. Для законного пользователя есть все программное обеспечение, которое должно быть видимым или только его части? Поскольку вы можете запутать и предоставить копию исходного кода для легитимации
  3. Вы можете обернуть php в контейнер, например Phalanger (.NET)
  4. . Возможно, это связано с внешней кражей, что означает код свободно просматривается через Интернет, поскольку клиенты его используют. Это может стоить инвестировать в дешевый хостинг веб-сайтов за 50 долларов в год, регистрируя своих законных клиентов с серийным номером в своем коде и регулярно публикуйте информацию о своем приложении на своем веб-сайте. По крайней мере, вы обнаружите, когда код был взломан. Вы можете надавить на него с саморазрушением через n дней, дав вам достаточно времени, чтобы связаться с вашим клиентом и изменить серийный номер. Это может быть единственный запутанный include () всего кода
-5
ответ дан robert 24 August 2018 в 05:47
поделиться

Если вы не можете создать «облачное приложение», которое вы размещаете самостоятельно, и они получают доступ через Интернет, вы можете изучить создание виртуального устройства с использованием виртуального сервера (из VMWare, Parallels, Sun и т. д.) и установить это «облегченная» версия Linux. Поместите свой PHP-код в виртуальную среду и установите виртуальную машину на свой сервер. Обязательно создайте способ предотвращения загрузки в корневой каталог. Конечно, это предполагает физическое посещение клиента.

2
ответ дан user 24 August 2018 в 05:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: