Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Klasa] Licencja
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
nasty
Wczoraj z nudow napisalem sobie klase, ktora mi (i moze wam) napewno sie przyda na przyszlosc, jest to klasa ograniczajaca dostep do waszej aplikacji. Na podstawie zaszyfrowanego pliku licencyjnego okresla czy aplikacje jest poprawnie licencjowana czy tez nie, dodam jeszcze aby uzyc tek klasy w "prawdziwej" aplikacji to wypadaloby "zendac" (skompilowac,szyfrowac....) bo inaczej to nie bedzie mialo sensu.

Klasa Licensing i License Writer

i Przykladowe zastosowanie

Prosze o opinje i komentarze...

ps. funkcje RC4 to nie ja wymyslilem tongue.gif
NetJaro
Drobne uwagi:

-> Używaj ' ' zamiast " ";
-> file_get_contents" title="Zobacz w manualu php" target="_manual i file_put_contents" title="Zobacz w manualu php" target="_manual

Ja osobiście mam łatwiejszy sposób - skrypt łączy się z bazą danych i sprawdza w bazie licencje winksmiley.jpg Oczywiście zakodowane to jest ionCube.
nasty
Ja wolalem to zrobic na plikach zeby mialo mniejsze wymagania, i byla mozliwosc przsylania pliku licencyjnego... od tworcy aplikacji do klienta
Cysiaczek
Wniosek: smile.gif
Wydzieliłbym odzielną metodę dla testow, które daleś w ciele konstruktora.
  1. <?php
  2. // checking for correct variables format
  3. if (empty ($productName)) {
  4. throw new Exception("Invalid product name.");
  5. }
  6. if (!is_string($productName)) {
  7. throw new Exception("Invalid product name.");
  8. }
  9. if (empty ($this->licenseFile)) {
  10. throw new Exception("Incorrect license file path");
  11. }
  12. if (file_exists($this->licenseFile)) {
  13. $this->licenseFileExist = true;
  14. }
  15. if (empty ($this->cryptoKey)) {
  16. throw new Exception("Invalid encription key");
  17. }
  18. //------- End of checking ------
  19. ?>


Mam też pewne obiekce w LicenseWriter::WriteLicenseFile()
Ja bym z tego bramkę zrobił na wszelki wypadek, bo może ktos zechce do bazy danych zapisać, albo do XML'a.


Niestety nigdy nie pisałem czegoś takiego, ale wygląda dobrze i może się przydac nie tylko do licencji smile.gif
Moimi narzekaniami się nie przejmuj, bo tak wogóle, to ja bym wszędzie oddzielne typy widział... (boże... jestem psycholem :| )
Pozdrawiam
kszychu
Cytat(nasty_psycho @ 12.07.2006, 08:35 ) *
dodam jeszcze aby uzyc tek klasy w "prawdziwej" aplikacji to wypadaloby "zendac" (skompilowac,szyfrowac....) bo inaczej to nie bedzie mialo sensu.

Mając zendenc nie musisz bawić się w osobne klasy. W głównym pliku dajesz normalnie include('licence.php') a w pliku licence.php umieszczasz co tylko ci sie podoba; datę wygaśnięcia, ilość użytkowników, nazwę firmy, itp.
Jeśli wszystkie pliki masz skompilowane, to podsyłasz tylko klientowi co jakiś czas nowy plik z licencją. Ja tak mam zrobione.
nasty
ale majac, eAccelerator, bcompiler, czy jakies obfuskatory to juz trzeba pisac swoje klasy.

pozdrawiam
mike
Może to i ładne ale w 100% bezużyteczne.
Birę twoją aplikację wyrzucam blok try...catch i Twoje zabezpieczenia poszły .... na spacer tongue.gif
nasty
ale napisalem wyraznie, ze zeby to mialo sens to nalezy to nalezy w jakikolwiek sposob zaszyfrowac kod, np. zend ma wbudowany system licencji, ale juz eAccelerator czy bcompiler nie, i tu sie to sprawdza, wkeljasz try, catch na poczatek skryptu, kodujesz i program zabezpieczony
mike
Cytat(nasty_psycho @ 25.07.2006, 22:14 ) *
ale napisalem wyraznie, ze zeby to mialo sens to nalezy to nalezy w jakikolwiek sposob zaszyfrowac kod, np. zend ma wbudowany system licencji, ale juz eAccelerator czy bcompiler nie, i tu sie to sprawdza, wkeljasz try, catch na poczatek skryptu, kodujesz i program zabezpieczony

To znaczy że Twój system zabezpieczeń działa tylko w już wcześniej zabezpieczonych skryptach, tak? laugh.gif LOL
nasty
zabezpiecza przed kopiowaniem, a nie podgladem zrodla.
Z nazwy mozna to wywnioskowac winksmiley.jpg

ps. czy kiedys probowales ochronic swoj program przed kradziejstwem? samo szyfrowanie nic nie da, i tak bedzie wszedzie dzialac, a ta klasa ma temu zapobiec. w przyszlosci jeszcze moze dodam walidacje na podstawie sprzetu... ale to tylko bajer.
mike
Cytat(nasty_psycho @ 25.07.2006, 22:25 ) *
zabezpiecza przed kopiowaniem, a nie podgladem zrodla.
Z nazwy mozna to wywnioskowac winksmiley.jpg

No wiem przecież, ale skoro to działa tylko na zaszyfrowanych, to przecież równie skuteczne będzie:
  1. <?php
  2.  
  3. $strTajnaLicencja = 'ok'
  4.  
  5. if( $strTajnaLicencja === 'ok' )
  6. {
  7. echo 'działa';
  8. }
  9. else
  10. {
  11. echo 'nie działa';
  12. }
  13.  
  14. ?>

i bedzie dużo szybciej tongue.gif
nasty
hehehehe, LOL biggrin.gif
szybciej to moze i tak, ale jak to nic nie robi, bo jaki wtedy ma sens miec prawidlowy serial, i gdzie go bedziesz trzymac? mike_mech, widac ze nie lapiesz co robi ta klasa, na google napisz "Software licensing system" , poszperaj a dokladniej sie zorientujesz.
Programy skompilowane, w ktorych nie mozna source podgladac, tez maja takie systemy w ktorych mosisz wpisac poprwany serial.
albo ewentualnie poczytaj Temat: zabezpieczenie kodu przed kopiowaniem
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.