Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zabezpieczenie kodu przed kopiowaniem
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
Stron: 1, 2
Kabraxis
Witam, wczoraj natkneła mnie taka myśl... zaliczmy, że sprzedajesz oskryptowanie na licencję płatną co roku lub jednorazowo. Taki kod może bardzo łatwo wyciec i znaleźć się w sieci, ktoś zmieni design, ostatecznie kilka linijek kodu z nazwami w $_GET i po sprawie... Przecież go nie znajdziesz, a jeśli nawet to napewno nie będziesz się ze wszystkimi sądził.

Jestem ciekawy jakich metod zabezpieczenia używacie, słyszałem, że są specjalne narzędzia do szyfrowania kodu chociaż wydaję mi się to nielogiczne bo jeśli coś można zaszyfrować i apache musi umieć to czytać to równie łatwo można to odszyfrować. Gdzieś kiedyś widziałem kod w którym usunięte były wszystkie entery i spację przez co stawał się nieczytelny.
Co w przypadku kiedy klient powinien opłacić po roku ponownie licencję?
W jaki sposób sprawić aby skrypt informował mnie o swoich instalacjach na róznych serwerach. Mi przyszło do głowy tylko zaszyfrowanie kawałka kodu np. poprzez base64 i później odszyfrowanie i wykonanie. Ale to nie daje żadnej gwarancji.
Rozważałem także możliwość w której skrypt łączy się z moim serwerem aby sprawdzić swoje id i tajny klucz czy licencja jest opłacona ale zmienić jednego ifa to nie problem...

Prosiłbym tutaj o wypisanie najskuteczniejszych metod ochrony własnego kodu, jeśli dobrze go rozwiniemy ten temat może się przydać jeszcze wielu następnym winksmiley.jpg

Pozdrawiam, Kabraxis
tiraeth
Jeden plik install.php, który pobiera resztę plików z Twojego serwera i zapisuje w bazie na jaki adres poleciała instalacji i kiedy... potem to juz sobie w ACP sprawdzasz czy licencja na skrypt mineła itd. Przy pobieraniu plików z serwera możesz poprosić o podanie np. klucza licencji itd smile.gif
Sabistik
Jakis czas temu byl spory temat na forum o tym. Jak dobrze pamietam scanner to opisywal. Jesli nie uzyjesz jakiegos encodera to nigdy nie bedziesz mial pewnosci ze Twoj skrypt gdzies sie nie ulotni..

topic
vieri_pl
Są narzędzia typu IonCube, polecam ! Sam zabezpieczałem tym skrypty, są one mniej więcej takiego wyglądu:

37yr saueifsdy78fr6 3w45 asdfDS%$$ BY^&%YDF gje8r9t6y76ngdfygfdgDF%^ $RSGDFG ^T%$@TSDFGwer5gdf A setEW RT

smile.gif

www.ioncube.com/
splatch
ion cube wymaga instalacji dodatkowego rozszeżenia do php, w rzeczywistości skrypt potraktowany tym encoderem nie pójdzie nigdzie, bo żaden ISP nie doinstaluje tego rozszeżenia.
LBO
nigdy nie sprawdzalem czy takie istnieja dla php, ale dobrym rozwiazaniem (bez dodatkowych rozszerzen itp) sa confuscatory... zmienia ja one nazwy zmiennych obiektow i wszystkiego co sie da.. na jakies zbitki alfanumeryczne np. zamiast $zalogowany (tutaj mozna sie domyslec do czego sluzy) zmieniona jest na $asfna4b3b43gjqbjhabfjagcrjdfgb23bc.. po prostu (jak nazwa wskazuje) wprowadza zamet w kodzie... jezeli ktos ma informacje o takich narzedziach niech sie wypowie..
Oczywiscie nie jest to 100% rozwiazanie problemu, bo jak ktos ma czas i to rozkmini o co w kodzie chodzi tongue.gif

edit: zawsze mozna samemu sprobowac takie narzedzie napisac smile.gif
kszychu
A nie lepiej użyć narzędzia do tego stworzonego? Mówię tutaj o zend encoder'ze. Nie dość, że kompiluje on kod, przez co skrypt wykonuje sięszybciej, to robi kod w ogóle nieczytelnym i nieedytowalnym. Ma ponadto wiele innych ciekawych funkcji, jak chociażby taka kompilacja, by skrypt działał do określonego dnia.
Jest to narzędzie komercyjne, ale jeśli ktoś robi oprogramowanie na sprzedaż, to uważam, że taki wydatek się opłaci.
Kabraxis
Mnie np. interesują tylko rozwiązania za free, ponieważ gdybym miał tak patrzeć przy każdej rzeczy jaką robie to byłoby to znacznie mniej opłacalne, pozatym wole wspierać opensource winksmiley.jpg
Ciekawi mnie jeszcze jedna rzecz... vieri czy wiesz może jak takie zaszyfrowanie kodu wpływa na szybkość jego wykonywania? Bo chyba nikt nie byłby za tym aby używać czegoś co spowalniało by za mocno wykonywanie skryptu.

Wedłóg mnie narazie najlepszym ze sposobów jest propozycja podana przez LBO.

A co do Ion Cube trzeba mieć uprawnienia administratora aby doisntalować rozszerzenie? Bo tak to zrozumiałem?

Co do pliku install.php to jest dobry pomysł tylko jak ktoś już to zainstaluje to jak zabezpieczyć to przed skopiowaniem tego co jest po zainstalowaniu?
splatch
Zend Encoder do uruchomienia przerobionego kodu wymaga jeszcze Zend Optimizera - czyli kolejnego rozszeżenia do php, którego admin na pewno nie będzie chciał zainstalować bądź będzie bardzo oporny..

Ja osobiście skorzystałem kiedyś z POBSa (php Obfuscator) - kod po nim wymaga czasami poprawek (zwłaszcza kiedy się używa extract itp) ale potrafi utrudnić odczytanie kodu.
vieri_pl
Co do szybkości działania, fakt chodzi to wolniej ponieważ musi skrypt się tak jakby w locie odkodować itp. Jednak propozycja LBO również wydaje mi się najlepsza... chociażby dlatego że ionCube wymaga właśnie dodatkowych rozszerzeń winksmiley.jpg
Kabraxis
Mysle, ze wszelkiego rodzaju rozwiazania, ktore wymagaja uprawnien adminsitratora z gory odpadaja, badzmy realistami winksmiley.jpg

Czy ktos w takim razie moze sie wypowiedziec na temat confuscatow?
Mnie np. interesowało by rozwiązanie dla linuksa (programy działające pod linuksem bo windowsa nie uzywam) winksmiley.jpg
LBO
zawsze wyjsciem jest doatkowo hosting dla swoich skryptow - czyli klient nie placi za skrypt tylko za usluge jaka on wykonuje... i tym spsobem,ma swoja strone do ktorej stworzono panel adminitracyjny.. moze miec dostep do bazy danyc, ale do plikow bezposrednio nie.. co o tym mslicie?
ikioloak
z tego co wiem to sie nazywa ASP. Rozwiaznaia takiego uzywaja powazniejsze firmy sprzedajace CRM'y. Generalnie jest to najlepsze rozwiazanie, dajace 1oo% pewnosci ze kod pozostanie wasz.

btw: nie wiecie moze ile kosztuje postawienie swojego kompa w serwerowni? tzn chodzi mi wlasnie o hosting na swoje potrzeby. czy lepszym wyjsciem jest kupno sewera dedykowanego..? nie znam sie za bardzo na tym :/
sf
Cytat(ikioloak @ 2006-01-26 23:39:34)
z tego co wiem to sie nazywa ASP. Rozwiaznaia takiego uzywaja powazniejsze firmy sprzedajace CRM'y. Generalnie jest to najlepsze rozwiazanie, dajace 1oo% pewnosci ze kod pozostanie wasz.

btw: nie wiecie moze ile kosztuje postawienie swojego kompa w serwerowni? tzn chodzi mi wlasnie o hosting na swoje potrzeby. czy lepszym wyjsciem jest kupno sewera dedykowanego..? nie znam sie za bardzo na tym :/

Nie tylko CRMy. Takze CMSy, np. RedDot.

Ceny są różne, zależy jaki to jest sprzęt. Oferta 300 PLN na miesiąc wydaje się już rozsądna. Tylko wtedy musisz sam się serwerem opiekować. Serwerownia co najwyżej Ci go zresetuje jak już wszystko padnie tongue.gif
vieri_pl
Takie rozwiązanie jest kosztowne.... a jemu chodzi o tani, a tak na prwdę darmowe smile.gif
Kabraxis
160 zł w stanach VPS ze wsparciem technicznym winksmiley.jpg

LBO także myślałem o takim rozwiązaniu ale tutaj pojawia się drugi problem, klienci musieliby opłacać zużyty transfer i być może miejsce. Bo np. ja ostatnio miałem pomysł na pewien serwis i w nim byłoby dużo zdjęć. Więc klient płacać przykładowo 300 zł za licencję na rok zużywał by transferu i miejsca za dwukrotnie wyższą cenę...

A tutaj chodzi o jednorazową opłatę.
vieri_pl
Korzystne rozwiązania == Wysokie koszty niestety sad.gif
LBO
w tym wypadku placimy za utrzymanie naszych - superwydajnych, uzywajacych najnowszych obiektowych metod i patternow oraz wogole takich kto kazdy chcialby miec - skryptow za dala od klienta... czasem sie to oplaca, a czasem nie...

sluchajcie - to jak? slyszal ktos cos o confuscatorach dla php, bo ja nawet dla javascriptu widzialem kiedys i nie chce mi sie wierzyc ze dla PHPka nikt nic nie napisal sad.gif
mike
Cytat(LBO @ 2006-01-27 12:58:28)
sluchajcie - to jak? slyszal ktos cos o confuscatorach dla php, bo ja nawet dla javascriptu widzialem kiedys i nie chce mi sie wierzyc ze dla PHPka nikt nic nie napisal sad.gif

A czytasz w ogóle odpowiedzi mad.gif
Przecież ~splatch wspominał o POBS
LBO
a czemu od razu oburzenie tongue.gif, ucieklo mi zwyczajnie... a odpowiedzi czytam, bo temat nie da sie ukryc bardzo ciekawy
Radarek
Tak swoja droga. Czemu piszecie 'confuscator'? Chyba powinno to sie nazywac 'obfuscator'. Zreszta tlumaczenie slowa obfuscate z ang
Cytat
gmatwać
mylić
ściemniać


Nawet ten program, do ktorego link podaliscie ma w title na stronce napisane "POBS - php Obfuscator".
Kabraxis
Dla mnie np. roziwazanie, w ktorym skrypty sa na moim serwerze mi odpowiada ponieważ mam akurat taką możliwość, tylko jak rozwiązać problem z duża ilościa transferu i zużywanego miejsca? Bo kazać płacić stałą wyższą kwotę (wliczającą przewidywalny transfer i zużyte miejsce) każdemu byłoby nie fair i by nie wyszlo, a zwykłą przynosiło by straty. Więc jak to rozwiązać? Kazać płacić miesięcznie za transfer? To by chyba nie przeszło... ma ktoś jakieś dobre rozwiązanie? A może skrypt umieszczał by pliki na ftp klienta?

---------------------------------------------
Czyli podsumowuąc najlepsze rozwiązania:
1) confuscator - program, który zamienia nazwy zmiennych oraz funkcji i niektóre z tego co wiem likwidują niepotrzebne entery i spację.
2) umieszczenie skryptów na własnym serwerze

Problematyka winksmiley.jpg
1) Cały czas czekamy aż ktoś się rozpisze na ich temat, a najlepiej byłoby gdyby to była osoba doświadczona w tym zakresie poprzez ich używanie.
2) Jak rozwiązać problem z zużywanym transferem i miejscem gdy kod będzie na naszym własnym serwerze?
W momencie kiedy to pisałem wpadłem właśnie na pomysł, że można by sprzedawać pakiety z licencją o różnych parametrach.

Dla mnie te rozwiązania są satysfakcjonujące, a dla Was?
Moim jednymym problemem jak narazie będzie odszukanie w google dobrego confuscatora, który będzie napisany pod linuksa.
LBO
jak juz mi zwrocono uwage ;P.. ~splatch dal cynk o POBSsie, a skoro php jest cross-platform to na linuksa tez sie nada biggrin.gif pozdrowienia
splatch
Przykładowy kod po POBSie - http://media.dywicki.pl/simple_counter-0.6.zip
Kabraxis
A ktoś zna zna jakieś inne programy niż POBS?
Ja się tym zajmę bardziej i znajdę coś fajnego za kilka dni jak będe miał przerwę pomiędzy egzaminami.

PS. Ten program nie jest zbyt nowy:
Version 0.99 - August 10th 2003

---------------------------------------------------------------
Dodane:
Przetesowałem ten program i stwierdzam wady:
- przy komentarzach z użyciem "#" się gubi
- jak jest $_POST[nazwa] zmienia takze nazwa....
Jak ustawilem w configu, zeby zostawil $_POST to $_POST[nazwa] nie zmieni ale jak mam $_POST[tab][nazwa] to znowu zmienia mi nazwe...

Myślę, że wkrótce podejmę się przeróbki tego programu winksmiley.jpg
MStaniszczak
To ten tego;-) Sciepka chłopaki na dedykowanego? 10 osób po 35 zł miesięcznie (chociaż dobrze by było zapłacić z góry) i stawiamy maszynkę;-) No i na niej:
  • php 5.1.x jako moduł
  • PostgreSQL i MySQL-e najnowsze;-)
  • Zend Optimizera i InoCube - w brew pozorom zencodowany skrypt działa szybciej - nie jest on odkodowywany a uruchamiany - nie musi być po prostu ponownie analizowany, to tak jakby zapisane struktury z Zend Engine-a po tym jak on już przetrawił nasze skrypty
  • CVS i Subversion
  • SSH
  • i co tam jeszcze chcemy;-)

Pozdrawiam,
Marcin Staniszczak
Kabraxis
Pominales tylko jeden wazny szczegol winksmiley.jpg
Jeśli ma być to kodowane to wtedy ktoś musiałby mieć u Ciebie swoje konta www, a kto by chcial założyć swoje konto w firmie u Pana Kowalskiego i mieć tam swój profesjonalny serwis winksmiley.jpg
A jeśli klienci nie będą mieli dostępu do ftp i będzie to tylko samodzielny skrypt to wtedy nie będzie miało sensu kodowanie.
MStaniszczak
Chętni klienci by się znaleźli – klienci najczęściej nie znają się na tym wszystkim i nie wiedzą czy firma A to firma Pan Kowalski czy też nie. Oczekują tylko tego żeby sami jak najmniej musieli załatwiać i żeby wszystko dobrze działało, a to już zależy od tego kto opiekuj się serwerem i od serwerowni (czy na pewno im coś nie nawala). Wiem – są wyjątki;-) Ale tak naprawdę to nie widziałeś tych ;-) ? ;-)

Pozdrawiam,
Marcin Staniszczak
kamilus
Turck MMCache. Wydajnością zbliżony do ZENDa. Z polskich hostingów na 100% obsługuje go home.pl.
Jeśli klienta stać na wykonanie serwisu przeze mnie to stać go także na home.pl. A działa to pięknie - przyspiesza jednocześnie działanie całego serwisu.
Astarot
Jesli chodzi o praktyczna strone tego zagadnienia to moje doswiadczenie jest zerowe. Mam jednak
pewien pomysl. Dla kazdego sprzedanego "produktu" przydzielaj unikalny kod. W aplikacji mozna
by tez ustawic zeby co okreslony czas laczyla sie z serverem i sprawdzala poprawnosc kodu.
W ten sposob mozna takze sprawdzic czy wiecej niz jeden "produkt" laczy sie z tym samym unikatowym kluczem. Obawiam sie jednak ze takie podejscie moze zostac szybko ominiete przez osoby potrafiace programowac w php. Chociaz gdyby zrobic takie sprawdzanie klucza i "zahaszowac" kod aplikacji mozna by miec przynajmniej swiadomosc z jakiego ip i ile osob kozysta z tego samego egzemplarza aplikacji.
Radarek
Bylo juz to przerabiane na forum... Jest to zadne zabezpieczenie dla kogos kto choc troche zna sie na php.
Fuzja
Jacek Idzik , autor cmsa PROcms (może widzieliście na allegro za 69 zł , system zresztą trochę słaby) zabezpieczył kod funkcją mail wysyłającą do niego mail jeśli ktoś zainastaluje aplikację . Widziałem jak osoby nie znające nawet htmla usuwają takie coś automatycznie , zabezpieczenie śmieszne smile.gif
mike
Cytat(Fuzja @ 2006-02-06 17:12:04)
Jacek Idzik , autor cmsa PROcms (może widzieliście na allegro za 69 zł , system zresztą trochę słaby) zabezpieczył kod funkcją mail wysyłającą do niego mail jeśli ktoś zainastaluje aplikację .

A czego się spodziewałeś po osobie która kod za 69 zł sprzedaje laugh.gif
I to jeszcze taki co ma PRO w nazwie
Fuzja
Ten cms ma możliwość prowadzenia wielojęzykowej strony oraz system newsów .
O dziwo sprzedaje się nieźle smile.gif
Ociu
Cytat(Fuzja @ 2006-02-06 18:55:15)
Ten cms ma możliwość prowadzenia wielojęzykowej strony oraz system newsów .
O dziwo sprzedaje się nieźle smile.gif

hm... A to dużo ma ten "cms". Też taki stworze.

---
Hehe, nie brnijmy w tego OTa, szkoda rozmywac taki fajny temat.
~mike_mech
Kabraxis
Ja już wprowadziłem swoje poprawki do pobsa, ma jeszcze kilka niedopatrzeń ale to już mniejszy problem. Rozważam jego sprzedaż na allegro tongue.gif Zdecydowanie po przerobieniu koda przez pobsa nie ma najmniejszych szans sie połapać, sam widok odrzuca winksmiley.jpg
LBO
rozumiem, ze twoj przerobiony kod sprzedany na allegro tez przenicujesz przez POBSa ? biggrin.gif a moze jednak sie podzielisz, ciom?
ergo
panowie, ja jestem zaskoczony jednym argumentem tutaj, ze zend encodera nie zainstaluje wam zaden admin, ze trzeba dedyki czy VPS-y... dla mnie to jakas pomylka to co bylo powiedziane . z tego co sie zorientowalem to na zachodzie prawie kazdy provider instaluje zend encodera wiec wiekszosc firm hostingowych to wam udostepni, nie sadze zeby w polsce byly jakies spore roznice w tej materii ( podejrzewam ze hostingi oferujace Cpanel oferuja rowniez rzeczony zend encoder ), co do ioncube-a to nie wiem dokladnie ale oni tez maja jakis loader ktorego chyba nie trzeba dolaczac do konfiga serwera ( ale pewnosci nie mam ), i mozna na starcie skryptu jakos wlaczyc bodajze ( rozwiazanie wolniejsze ). mozna to sprawdzic w phpinfo() tongue.gif LOL, a adminow nie pytajcie mnie ostatnio powiedziano ze nie beda dostepne sqlite z php5 na serwerze, a jesli sa odpowiedni biblioteki zaladowane w php to zdaje sie ze to dziala prawda ? :]
L_Devil
Można tak: Kod źródłowy kodować algorytmem typu blowfish (potrzeba znać hasło do odkodowania) - i za każdym razem algorytm przysyła pytanie o hasło na nasz serwer. W sumie ściągnąć 32 znaki typu md5() to żadne obciążenie dla transferu, a zysk jest dość pewny - zawsze wiemy kto i ile używa naszego kodu źródłowego. Kod blowfish może być zintegrowany z serwerem - np. coś takiego:

User wchodzi na aplikację klienta -> aplikacja wysyła zapytanie do naszego serwisu -> Odczytujemy ip które nam przysyła. Kodujemy je przez naszą funkcję (np.
  1. <?php
  2. return md5($ip_usera . "blablabla");
  3. ?>
- chodzi o to żeby nikt nie mógł podrobić hasła dla innego ip -> Zakodowany ciąg znaków wraca do klienta i jest wykorzystany jako blowfish do hasła -> Po rozkodowaniu aplikacji, program się wykonuje dalej normalnie -> Zadowolony user kończy pracę

Zalety:
+ Klient nie może usunąć powiadamiania, bo skrypt mu przestanie działać
+ Jak ktoś skopiuje skrypt, od razu będziesz wiedzieć (ip pytania pochodzi z innego miejsca)
+ Małe obciążenie dla twojego serwera (w porównaniu z klienckim winksmiley.jpg )

Wady:
+ Zdeterminowany klient może odkryć że otrzymuje wciąż tą samą danę z twojego serwera i może mu ją ręcznie podać do skryptu. Z drugiej strony, jeżeli to potrafi to prawdopodobnie nie potrzebuje twojej pomocy, żeby skrypt napisać.
+ Klient musi ci mówić o każdorazowej zmianie ip serwera
dr_bonzo
Cytat
+ Zdeterminowany klient może odkryć że otrzymuje wciąż tą samą danę z twojego serwera i może mu ją ręcznie podać do skryptu. Z drugiej strony, jeżeli to potrafi to prawdopodobnie nie potrzebuje twojej pomocy, żeby skrypt napisać.

Co do pierwsze czesci sie zgadzam, z drugiej strony: monitor sieci + ehtereal (OS program) -- bardzo proste narzedzia -- i masz haselko w rece, wystarczy przekierowac rzadania (na poziomie iptables (dla unixa)) do lokalnego serwera ktory poda ci to samo haslo. Co w porownaniu do napisania tak rozbudowanego/wielkiego skryptu (ktory az wymaga zeby zastosowac kodowanie/ochrone kodu) jest niczym.

Obnizenie wydajnosci:
- request po haslo
- "odkodowanie kodu" smile.gif
RAFpl
Zazwyczaj firmy kupują duże skrypty, a wtedy łatwo jest ukryć złośliwy kod tj. robiący to co jest przez nas pożądane, a mała przejrzystość kodu (brak komentarzy i wcięć) powoduje trudności dogrzebania się do odpowiednich linijek.
Jeżeli produkt będzie sprzedawany tylko firmą (wiemy kto miał dostęp do kodu naszego skryptu - kluczowy jest tutaj odbiorca usług ) i będzie składał się z licznych plików to jest szansa, że nikt nie będzie bawił się w kreatywne oszczędzanie kosztem nas ;].

Wracając jednak do naszego kodu ;]. Kod ten pobierałby aktualną datę serwera i dodawał po okresie instalacji określoną ilość dni, kiedy nie wyświetlany byłby błąd licencji ;].

Ewentualnie wysyłałby do naszej bazy potajemnie adres strony + plus czas zainstalowania, ale nie pokazywałby po skończeniu licencji żadnych błędów.
Później mielibyśmy argumentacje, że przypadkiem odkryliśmy nasz skrypt na ich stronie (wtedy nie uraczyliby nas grzebaniem w naszym kodzie ;] w przyszłości ).


Można także w skrypcie sprzedawanym jakoś ważną część silnika php includować z naszego serwera, ale tutaj jest problem bezpieczeństwa.
carramba
Jakiś czas temu napisałem taki projekt do ukrywania kodu php, zasada działania dokładnie taka sama jak POBS ale działanie lepsze, POBS wywala się w przypadku pracy z dużym projektem. Żadne rozwiązanie tego typu nie daje 100% pewności, że kod nie zostanie ukradziony, ale generalnie znacznie utrudnia sprawe. Soft był testowany w kilku przypadkach na dużych aplikacjach po kilkanście tysięcy zmiennych i generalnie nie było problemów.

http://www.turtle.dotproject.pl/
nasty
jest kilka dobrych metod ale zaproponuje bezpaltne:

Bezpatny zammennikem dla zend encoder i ionCube jest eAccelerator ktury nie szyfruje kod tylko go kompiluje, co uniemozliwia decompulacje, to co do szyfrowania kody.
a co do za bezpieczeniem przed zmanato sprobuj ta metode.
niech guwny plik w twoim programie ktury zawsze ject 'includowany' mial w sobie nastepujace instrukcje:
1) musisz manualnie obliczyc wszyskie md5() plikow kture sa w twoim programie,
2) wpisac je do tego pliku
3) spawdzac czy sie zgadzaja z aktualnymi md5() pilkow i pokazac error w razie bledu
4) to wszysko bedzie skompilowane wiec nikt nie bedzie wiedzial o co chodzi


ps. sorki za muj plski, ale ja jest obcokrajowcem
akubiczek
Cytat(nasty_psycho @ 27.05.2006, 13:22 ) *
ps. sorki za muj plski, ale ja jest obcokrajowcem


Terefere. Obcokrajowiec wbrew pozorom nie popełnia notorycznych błędów ortograficznych.

---
Masz jakieś spostrzeżenia, napisz to autorowi na PW.
Masz ochotę na ostrzeżenie to pisz dalej takie idiotyczne posty.
~mike_mech
rubin
Wroce jeszcze do IonCube.. najnowsza wersja jest w stanie funkcjonowac bez zadnego doinstalowywania bibliotek aaevil.gif
Fakt, pelna wersja kosztuje nawet 300$ ale nie ma co sie oszukiwac jezeli robisz oprogramowanie warte 500zl to zwykle mieszanie kodu wystarczy, natomiast przy 5000zl trzeba zainwestowac (jednorazowo!).
Dla skapcow - mozna na ich stronie przeprowadzic kompilacje kodu online za smieszne pieniazki (kilka $).
mokry
Pozwolę się sobie zabrać głos w tym temacie:

Rozwiązanie, które proponuje nie jest darmowe ale za to najskuteczniejsze z jakim miałem do czynienia, nie było ich mało. Przejde do rzeczy:

Proponuje użyć programy Codelock firmy Website Creations Ltd, (http://www.websitecreations.co.nz/).
//to nie jest żadna reklama //
Osobiście używam tego programu i jest po prostu idealny. Pliki kodowane są nie do rozkodowania, blokuje debugery co zwiększa bezpieczeństwo skryptu), możliwośc działania skryptu przez ileś dni od poerwszego uruchomienia lub do pewnej konkretnej daty, hasło przy pierwszym uruchomieniu, lub bez hasła, blokadana na konkretne domeny lub IP, kompresja ZLIB i wiele innych.
Jeżeli po roku chcesz przedłużyć okres ważności skryptu podmienia się tylko plik licencji, którego nazwę ustalasz sam.

Co najlepsze: Skrypt nie wymaga żadnych dodatkowych bibliotek, a wszystko niezbędne ma już w pliku licencji (oczywiście zakodowane).

Ponadto sam program może jeszcze kodować HTML, kod php i HTML np w taki sposób:
<?php
eval(base64_decode('JGNvZGVsb2NrX2NvZGU9IlB6NDhQdzBLUHo0OFAxQklVQ0E9IjsgJGNvZGVsb2NrX2NvZGU9c3Ry
X3JlcGxhY2UoIkAiLCJDQWciLCAkY29kZWxvY2tfY29kZSk7ICRjb2RlbG9ja19jb2RlPXN0cl9yZXBsY
WNlKCIhIiwgIlc1IiwgJGNvZGVsb2NrX2NvZGUpOyAkY29kZWxvY2tfY29kZT1zdHJfcmVwbGFjZSgiKi
IsICJDQWdJIiwgJGNvZGVsb2NrX2NvZGUpOyAkY29kZWxvY2tfY29kZT1iYXNlNjRfZGVjb2RlKCRjb2R
lbG9ja19jb2RlKTsgZXZhbCgkY29kZWxvY2tfY29kZSk7IAo='));
?>

Poniżej daje link do paczki z zakodowanym phpinfo:
http://webdesign.bitmar.net/phpinfo.zip
carramba
Tak jak mówiłem wcześniej, nie ma dobrych zabezpieczeń kodu php. Jeśli da się rozkodować Windowsa ( a da się ) to co dopiero php. Lepszym rozwiązaniem jest zendEncoder lub iCube ale to też nie daje 100% gwarancji że ktoś kto będzie uparty nie rozbroi naszych zabezpieczeń dla przykładku główne funkcje wspomnianego wyżej programu CodeLock :

  1. <?php
  2. function codelock_run($ciph,$key)
  3. { 
  4. $m=0; 
  5. $abc=''; 
  6.  
  7. for($i=0;$i<strlen($ciph);$i++)
  8. { 
  9. $c=substr($ciph,$i,1); 
  10. $dv=codelock_dec($c); 
  11. $dv=($dv-$m)/4; 
  12. $fb=decbin($dv); 
  13.  
  14. while(strlen($fb)<4)
  15. { 
  16. $fb='0'.$fb; 
  17. } 
  18.  
  19. $abc=$abc.$fb; 
  20. $m++; if($m>3){ $m=0; } 
  21. } 
  22.  
  23. $kl=0; 
  24. $pd=''; 
  25.  
  26. for($j=0;$j<strlen($abc);$j=$j+8)
  27. { 
  28. $c=substr($abc,$j,8); 
  29. $k=substr($key,$kl,1); 
  30. $dc=bindec($c); 
  31. $dc=$dc - strlen($key); 
  32. $c=chr($dc); $kl++; 
  33.  
  34. if($kl>=strlen($key)){ $kl=0; } 
  35.  
  36. $dc=ord($c)^ord($k); 
  37. $p=chr($dc); 
  38. $pd=$pd.$p; 
  39. } 
  40.  
  41. return $pd; 
  42.  
  43. }
  44.  
  45. function codelock_dec($codelock_v)
  46. { 
  47. switch($codelock_v) { 
  48. case 'A':$dv=0;break; 
  49. case 'B':$dv=1;break; 
  50. case 'C':$dv=2;break; 
  51. case 'D':$dv=3;break; 
  52. case 'E':$dv=4;break; 
  53. case 'F':$dv=5;break; 
  54. case 'G':$dv=6;break; 
  55. case 'H':$dv=7;break;
  56. case 'I':$dv=8;break; 
  57. case 'J':$dv=9;break; 
  58. case 'K':$dv=10;break; 
  59. case 'L':$dv=11;break; 
  60. case 'M':$dv=12;break; 
  61. case 'N':$dv=13;break; 
  62. case 'O':$dv=14;break; 
  63. case 'P':$dv=15;break; 
  64. case 'Q':$dv=16;break; 
  65. case 'R':$dv=17;break; 
  66. case 'S':$dv=18;break; 
  67. case 'T':$dv=19;break; 
  68. case 'U':$dv=20;break; 
  69. case 'V':$dv=21;break; 
  70. case 'W':$dv=22;break; 
  71. case 'X':$dv=23;break; 
  72. case 'Y':$dv=24;break; 
  73. case 'Z':$dv=25;break; 
  74. case 'a':$dv=26;break; 
  75. case 'b':$dv=27;break; 
  76. case 'c':$dv=28;break; 
  77. case 'd':$dv=29;break; 
  78. case 'e':$dv=30;break; 
  79. case 'f':$dv=31;break; 
  80. case 'g':$dv=32;break; 
  81. case 'h':$dv=33;break; 
  82. case 'i':$dv=34;break; 
  83. case 'j':$dv=35;break; 
  84. case 'k':$dv=36;break; 
  85. case 'l':$dv=37;break; 
  86. case 'm':$dv=38;break; 
  87. case 'n':$dv=39;break;
  88. case 'o':$dv=40;break; 
  89. case 'p':$dv=41;break; 
  90. case 'q':$dv=42;break; 
  91. case 'r':$dv=43;break; 
  92. case 's':$dv=44;break; 
  93. case 't':$dv=45;break; 
  94. case 'u':$dv=46;break; 
  95. case 'v':$dv=47;break; 
  96. case 'w':$dv=48;break;
  97. case 'x':$dv=49;break; 
  98. case 'y':$dv=50;break; 
  99. case 'z':$dv=51;break; 
  100. case '0':$dv=52;break; 
  101. case '1':$dv=53;break; 
  102. case '2':$dv=54;break; 
  103. case '3':$dv=55;break;
  104. case '4':$dv=56;break; 
  105. case '5':$dv=57;break; 
  106. case '6':$dv=58;break; 
  107. case '7':$dv=59;break; 
  108. case '8':$dv=60;break; 
  109. case '9':$dv=61;break; 
  110. case '+':$dv=62;break; 
  111. case '/':$dv=63;break; 
  112. case '=':$dv=64;break; 
  113. default: $dv=0;break; 
  114. } 
  115.  
  116. return $dv; 
  117. } 
  118.  
  119. function codelock_dec_int($codelock_decint_code,$codelock_calc_key) 
  120. {
  121. if ($codelock_calc_key == '') 
  122. { 
  123.  
  124. } else { 
  125.  
  126. $codelock_calc_key = base64_encode($codelock_calc_key); 
  127. $codelock_k1=substr($codelock_calc_key,0,1); 
  128. $codelock_k2=substr($codelock_calc_key,1,1); 
  129. $codelock_k3=substr($codelock_calc_key,2,1); 
  130. $codelock_decint_code = str_replace('$', '$codelock_k1', $codelock_decint_code); 
  131. $codelock_decint_code= str_replace('(', '$codelock_k2', $codelock_decint_code); 
  132. $codelock_decint_code=str_replace(')', '$codelock_k3', $codelock_decint_code); 
  133.  
  134. } 
  135.  
  136. $codelock_decint_code=base64_decode($codelock_decint_code);
  137.  
  138. return $codelock_decint_code; 
  139.  
  140. } 
  141. }
  142. ?>
nasty
Pogrzebalem troche w sieci i doszedlem do jednej refleksji:
Produkty zapezpieczajace skrypty php przed podgladem zrodla sa nie zbyt dobrym rowiazaniem (http://wwww.18yuan.com/), dlaczego ? dlatego bo za duzo ludzi grzebalo w nich, prawie karzdy kiedzys mial stycznisc z kodem zabespieczonym w ten sposob, dlatego napewno ktos staral sie to zalamac, i pewnie kilku sie udalo ( nie zabezpieczenia bez crack-u !). i moim zdaniem najlepszym sposobem ukrywania kodu jest polaczenie php + jakis c/c++ itp. wtedy php bedzie uzywac system() aby uzyskac swoj source programy i then exe bedzie mu go dawal, ale to rowiazanie jest dla bardzo zaawansowanych, i gwarantuje lepszy poziom bezpieczenstwa.

Drugi sposob, jest takrze bezpieczny are trzeba durzego bandwidtha do tego: zamiast stawiac kody na kompie klienta i sciagac klucz szyfry z twojego serwera, mozesz posunac sie o krok dalej i urzyc WebServices, ktore beda wykonywaly te najbardziej "tajemnicze" funkcje, a reszte operacji ja np: (echo, itd. itp) to na lokalnym kompie klienta bedzie, to rozwiazanie ma kilka zalet:
1) pelna kontrola execucji
2) na 100% kod nie zostanie skradziony.
3) klient ni musi sciagac update tylko ty zmieniasz kod u siebie

wady:
1) zre bandwidth jak cholera
2) nie kazdy ma internet (np. intranet)
3) niektuzy nie maja zaufania to tego typu dzialanosci...
NuLL
Wady:
4) Ktos moze sobie dopisac brakujacy kod.
bigZbig
O dopisywanie brakujacego kodu az tak bardzo bym sie nie martwil bo skoro dopisze to juz nie ukradnie. Za to dostrzegam inna wade. Funkcjonowanie strony zbudowanej o tak zorganizowany skrypt zalezy od poprawnego funkcjonowania nie tylko serwera na ktorym jest umieszczona, ale tez od serwera uslugodawcy. Podwojenie awaryjnosci.
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-2024 Invision Power Services, Inc.