Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczanie skryptów php / licencjonowanie
Forum PHP.pl > Inne > Hydepark
athabus
Hej,
nie wiem czy właściwe forum, bo temat dotyka kilku dziedzin.

Ogólnie chodzi mi o zabezpieczanie kodu źródłowego i licencjonowanie aplikacji.

Pracuję obecnie nad aplikacją, która wstępnie chciałem wykorzystać na własne potrzeby, ale okazuje się, że mogłoby nią być zainteresowanych kilka osób. Pytanie jednak jak najlepiej zabezpieczyć kod przed nieautoryzowanym użytkowaniem. Załóżmy, że chciałbym dawać licencję na użytkowanie na 1 domenie.

Swego czasu były popularne różnego rodzaju programy typu Ioncube itp., ale gdy googlowałem w tym temacie, to wszystkie wątki są dość stare - sprzed kilku lat. Czy coś w temacie się zmieniło - pojawiły się jakieś nowe metody zabezpieczeń?

Od razu napiszę, że w tym przypadku, z pewnych względów odpada SaaS - musi to być aplikacja self-hosted.

Sama aplikacja jest dość niszowa, więc raczej nie spodziewam się jakiś historii typu łamanie zabezpieczeń itp, także godzę się z tym, że kod nie będzie w 100% bezpieczny. Powiedzmy, że ma to być zabezpieczenie skuteczne na typowego "Janusza internetu".

Może lepiej nic nie zabezpieczać, a po prostu starać się wyłapać nielegalnych użytkowników? Przychodzi mi do głowy zaszycie w aplikacji różnych mechanizmów pingujących po których wiedziałbym, na jakich domenach aplikacja jest używana. Wiadomo - zawsze ktoś może takie zabezpieczenie z łatwością złamać, ale na wielu użytkowników takie zabezpieczenie w zupełności powinno wystarczyć.

Reasumując jakie strategie są do wyboru. Może macie jakieś własne doświadczenia?
Pyton_000
IonCube to dość dobre rozwiązanie, pozwala zabezpieczyć na różnych płaszczyznach od domeny po mac serwera.

Jak to w tego typu zabezpieczeniach bywa, cena jest dość wysoka.
Najnowsza wersja nie jest jeszcze chyba złamana (a raczej przechwycona, bo odbywa się to na zasadzie przechwycenia odkodowanego źródła zanim parser php skompiluje)

Inna alternatywa to ZendEncoder.

Są też chyba jakieś darmowe narzędzia ale wiadomo, bezpieczeństwo nie powala.
athabus
A tak z ciekawości jaki obecnie jest standard jeśli chodzi o płatne skrypty? Np. fora, sklepy internetowe itp., które nie są rozpowszechniane jako OS, tylko w formie kodu na jakiejś płatnej licencji komercyjnej? Ciągle się zastanawiam, czy kodowanie źródła do dobry pomysł sam w sobie. Może już dożyliśmy czasów, gdzie można liczyć na uczciwość kupujących i przy rozsądnej cenie nie ma sensu demonizować piractwa?
Jeszcze raz podkreślę, że program nie jest kierowany na massmarket, a do w miarę wąskiej grupy firm, więc nie chodzi tu o klientów typu "dzieci neostrady", które wszystko muszą pobrać za darmo z torrentów?
Może takie firmy stosują jakieś inne formy zabezpieczeń - bardziej przyjazne klientowi?
sowiq
Standard jest chyba taki, że po prostu płacisz i dostajesz cały kod źródłowy.

Jeśli aplikacja miałaby być używana w wąskim gronie odbiorców, to możesz zastosować prostą sztuczkę. Na umowie zawierasz wysoką karę umowną za rozpowszechnianie kodu źródłowego. A w samym kodzie robisz jakiś mały wyróżnik, dla każdego klienta inny. Np. dodajesz jakąś nieużywaną klasę, w jednym pliku inaczej sformatujesz klamerki, itp. Dzięki temu w przypadku ewentualnego wycieku, będziesz w stanie znaleźć jego źródło i będziesz mógł wyegzekwować karę umowną wink.gif Ale to tylko takie teoretyzowanie.
athabus
No właśnie o takim podejściu też myślę - zwłaszcza, że odbiorcami będą głównie firmy, więc ewentualne egzekwowanie należności powinno być łatwiejsze. Nie mam tu nawet na myśli jakiegoś straszenia ludzi wielkimi karami etc - po prostu chcę uniknąć sytuacji, że narobię się aby przygotować skrypt dla zwykłego użytkownika (bo wiadomo jak się pisze dla siebie, to wiele rzeczy można zrobić na zasadzie "to sobie zrobię w bazie bo robi się to tylko raz"), a potem ktoś puści w sieć i każdy sobie ściągnie darmową wersję. Myślę właśnie o zabezpieczeniach typu:
- jakaś akcja przy okazji wysyła do mnie email
- jakaś akcja przy okazji łączy się z moim serwerem i loguję w ten sposób domenę z jakiej było wywołanie
- wiadomo same aktualizacje też wymagają połączenia z serwerem
- jakaś prosta licencja, którą co prawda da się łatwo obejść w kodzie, ale znów pewnie samo w sobie to zatrzyma dużą część potencjalnych piratów typu "Heniek, mam taką aplikację to Ci podeślę".

Im więcej o tym myślę, tym bardziej dochodzę do wniosku, że chciałbym po prostu wyeliminować niedzielnych piratów. Moja aplikacja nie ma żadnych wymyślnych algorytmów, które chciałbym ukryć etc - po prostu trochę automatyzuje pewną czynność. Mocno nie sądzę aby komuś specjalnie zależało na łamaniu zabezpieczeń i rozpowszechnianiu pirackiej wersji.
pyro
Przy takiej małej skali jaką opisujesz, sprytnie zaimplementowana licencja w zupełności wystarczy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.