Najlepsze rozwiązanie do ochrony kodu PHP bez szyfrowania

Po pierwsze, nie szukam cudu... Wiem, jak działa PHP i że nie ma sposobu, aby ukryć mój kod przed klientami bez użycia szyfrowania. Ale wiąże się to z kosztem rozszerzenia, które ma być zainstalowane na działającym serwerze.

Szukam jednak czegoś innego... Nie chcę szyfrować mojego kodu ani nawet go zaciemniać. Istnieje wiele skryptów PHP bez zaszyfrowanego / zaciemnionego kodu, ale są to aplikacje komercyjne. Na przykład vBulletin i / lub IP.Aplikacje na forum forum.

Chcę tylko wiedzieć, jakie podejście stosują ci faceci do swoich zastosowań...

Jestem również otwarty na wszelkie inne sugestie.

Proszę pamiętać, że jestem osobą samotną i nie pracuję dla firmy. Mój produkt jest również bardzo specyficzny, nie sprzeda się tak dużo. Chcę, żebyście wiedzieli, że nie mogę sobie pozwolić na konsultację z prawnikiem, albo na pozew, albo przygotowanie licencji. Szukam tylko prostego sposobu na ochronę mojego prostego produkt, jeśli jest to rzeczywiście możliwe, w jakiś sposób...

Author: Ken, 2008-12-03

11 answers

Zaciemnianie rzeczy może tylko sprawić kłopot Twoim prawowitym, przestrzegającym prawa klientom, podczas gdy ludzie, którzy by cię okradli, nie są twoimi docelowymi płatnymi klientami. (edytował inne myśli o zaciemnianiu)

Kolejna propozycja ochrony Twojego oprogramowania: stwórz model biznesowy, w którym kod jest niepełną częścią wartości Twojej oferty. Na przykład sprzedawaj licencje produktów wraz z dostępem do niektórych danych, którymi zarządzasz w witrynie, lub licencjonuj produkt w modelu subskrypcji lub z obsługą klienta.

Projektowanie EULA jest sprawą prawną, a nie sprawą kodowania. Możesz zacząć od przeczytania tekstu EULA dla produktów i stron internetowych, których używasz. Możesz znaleźć kilka ciekawych szczegółów!

Tworzenie licencji własnościowej jest bardzo elastyczne i prawdopodobnie jest to temat wykraczający poza zamierzony zakres StackOverflow, ponieważ nie chodzi wyłącznie o kodowanie.

Niektóre części EULA, które przychodzą na myśl:

  • ograniczanie twojego odpowiedzialność, jeśli produkt ma błędy lub powoduje uszkodzenia.
  • określenie, w jaki sposób klient może korzystać z licencjonowanego oprogramowania, przez jak długo, na ilu komputerach, z prawami do redystrybucji lub bez nich itp.
  • daje Ci prawo do audytu ich strony, abyś mógł wyegzekwować licencje.
  • co się stanie, jeśli naruszą umowę EULA, np. utracą uprawnienia do korzystania z oprogramowania.

Należy skonsultować się z prawnikiem, aby przygotować reklamę EULA.

Edit: Jeśli ten projekt nie może uzasadnić kosztów prawnika, sprawdź te zasoby:

 33
Author: Bill Karwin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 03:13:49

Musisz wziąć pod uwagę swoje cele:

1) czy próbujesz uniemożliwić ludziom czytanie / modyfikowanie Twojego kodu? Jeśli tak, będziesz potrzebował narzędzia do maskowania/szyfrowania. Używałem Zend Guard z dużym powodzeniem.

2) próbujesz zapobiec nieautoryzowanej redystrybucji kodu?? EULA / licencja własnościowa da ci moc prawną, aby temu zapobiec, ale nie powstrzyma tego. Schemat klucza / aktywacji pozwoli na aktywne monitorowanie użycie, ale można je usunąć, chyba że zaszyfrujesz swój kod. Zend Guard ma również możliwość zablokowania konkretnego skryptu na konkretnej maszynie klienta i / lub tworzenia ograniczonych czasowo wersji kodu, jeśli tego chcesz.

Nie jestem zaznajomiony z vBulletin i tym podobne, ale oni albo muszą szyfrować / zaciemniać lub ufać swoim użytkownikom, aby zrobić właściwą rzecz. W tym drugim przypadku mają one ochronę w postaci umowy EULA, która zakazuje zachowań, które uznają za niepożądane, oraz system prawny w celu zabezpieczenia naruszeń EULA.

Jeśli nie jesteś przygotowany/w stanie podjąć działań prawnych w celu ochrony swojego oprogramowania i nie chcesz szyfrować/zaciemniać, możesz: A) wydać go za pomocą EULA, więc masz legalną opcję, jeśli kiedykolwiek będziesz go potrzebować i mieć nadzieję na najlepsze, lub B) rozważyć, czy licencja open source może być bardziej odpowiednia i po prostu pozwolić na redystrybucję.

 14
Author: Jim OHalloran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-26 01:29:38

Możesz użyć kompilatora php:

Roadsend

Phc

 7
Author: grepsedawk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-08 09:11:08

Od jakiegoś czasu nie patrzyłem na kod źródłowy VBulletin, ale sposób, w jaki robili to około 2003 roku, polegał na osadzeniu połączenia na ich serwerze w kodzie. IIRC, to było na bardzo długiej linii kodu (np. 200-300 + znaków) i zostało podzielone na kilka konkatenacji łańcuchów itp.

Nie zrobił nic "złego" jeśli to pirackie-forum nadal działa w 100%. Ale IP Twojego serwera został zarejestrowany wraz z innymi informacjami i użyli go do zbadania i podjęcia działań prawnych.

Twój numer licencji został wbudowany w to połączenie, aby mogli łatwo śledzić, na ilu adresach IP / witrynach działa dana licencjonowana Kopia.

 6
Author: Alarion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 03:08:57

Jeśli nie możesz utworzyć" aplikacji w chmurze", którą hostujesz i która uzyskuje dostęp przez Internet, możesz rozważyć utworzenie urządzenia wirtualnego przy użyciu serwera wirtualnego (z VMWare, Parallels, Sun itp.) i zainstalować na tym "lite" wersję Linuksa. Umieść swój kod PHP w środowisku wirtualnym i zainstaluj maszynę wirtualną na ich serwerze. Upewnij się, aby utworzyć sposób, aby zapobiec załadowaniu do roota. Oczywiście wymagałoby to fizycznej wizyty u klienta.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-17 17:59:34

Dystrybuują swoje oprogramowanie na zastrzeżonej licencji. Prawo chroni ich prawa i uniemożliwia ich klientom redystrybucję źródła, chociaż nie ma rzeczywistych trudności z tym.

Ale jak zapewne wiecie, naruszenie praw autorskich (piractwo) oprogramowania jest dość powszechnym zjawiskiem.

 1
Author: Eran Galperin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 02:17:07

Moim zdaniem jest, ale na wszelki wypadek jeśli twój program z kodem php jest napisany dla samodzielnego modelu... najlepszym rozwiązaniem jest c) można by zawinąć php w kontener typu Phalanger (. NET). jak każdy wie, jest ściśle związany z systemem, zwłaszcza jeśli program jest przeznaczony dla użytkowników windows. możesz po prostu stworzyć własny algorytm ochrony w języku programowania windows, takim jak. NET / VB / C # lub cokolwiek wiesz w.NET prog.lang.zestawy rodzinne.

 1
Author: achy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-29 17:23:53

Jedynym sposobem, aby naprawdę chronić swoje aplikacje php przed innymi, jest nie udostępniać kodu źródłowego. Jeśli umieścisz kod gdzieś w Internecie lub wyślesz go do swoich klientów za pomocą jakiegoś medium, inne osoby niż ty mają dostęp do kodu.

Możesz dodać unikalny znak wodny do każdej kopii kodu. W ten sposób wyśledzisz przecieki do pojedynczego klienta. (Ale czy to ci pomoże, skoro kod jest poza Twoją kontrolą?)

Większość kodów jakie widzę pochodzi z licencji i może gwarancja. Linia na górze skryptu mówi ludziom, aby nie zmieniali skryptu, być może wystarczy. Self; kiedy znajdę nie-otwarty kod źródłowy, Nie będę go używał w moich projektach. Może jestem trochę oszukany, ale oczekuję, że ppl nie użyje mojego kodu none-OSS!

 0
Author: qualbeen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-03 23:49:57

Zend Guard nie obsługuje php 5.5 i jest łatwy do odwrócenia, przejdź do http://www.ioncube.com do zaciemniania. http://wwww.phplicengine.com może licencjonować Skrypty zdalnie lub lokalnie.

 0
Author: Igdrazil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-01 06:47:46

Zobacz nasz SD PHP Obfuscator. Obsługuje ogromne systemy plików PHP. Brak wymagań runtime na serwerze PHP. Brak dodatkowych kosztów związanych z uruchomieniem.

[edytuj Maj 2016] Ostatnia odpowiedź zauważyła, że Zend nie obsługuje PHP5. 5. SD PHP Obfuscator robi.

 0
Author: Ira Baxter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-28 16:16:43

Więc zobaczmy, chcemy pokazać Adamowi i Ewie, że na drzewie jest jakiś zakazany owoc, a my chcemy zapobiec ich jedzeniu...

A może anioł z płonącym mieczem?

  1. Może zabrzmieć naiwnie i nie wiem, co właściwie robi Twoja aplikacja, ale co z szerokim wykorzystaniem obejmuje?

  2. Czy dla uprawnionego użytkownika całe oprogramowanie powinno być widoczne, czy tylko jego części? Ponieważ możesz zaciemnić i dać kopię kod źródłowy do legalnego

  3. Możesz zawinąć php w kontener taki jak Phalanger (. NET)

  4. Być może jesteś zainteresowany kradzieżą zewnętrzną, co oznacza, że Twój kod jest swobodnie widoczny w Internecie, gdy klienci go używają. Może to być warte zainwestowania w tani hosting strony internetowej, za $50 rocznie, rejestrując swoich legalnych klientów z seryjnym kodem i regularnie umieszczając informacje o aplikacji na swojej stronie internetowej. Przynajmniej wykryłbyś, kiedy Kod został naruszony. Ty może spowodować samozniszczenie po n dniach, dając ci wystarczająco dużo czasu, aby skontaktować się z klientem i zmienić serial. To może być tylko zaciemnione include () całego kodu

 -5
Author: joe Black,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-01 01:33:01