IONCube i nadpisywanie konstruktora |
IONCube i nadpisywanie konstruktora |
5.06.2013, 11:47:10
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 3.06.2013 Ostrzeżenie: (0%) |
Witam
Stworzyłem bibliotekę (pojedyncza klasa) zakodowana IonCube online. W konstruktorze mam wlasną procedurę "sprawdzającą licencję użytkownika". Reszta projektu nie jest zakodowana. Aby uniknać ze ktoś poprzez extends nadpisze konstruktor i wyłączy sprawdzanie licencji mam dwa wyjścia: 1. dac final na moim konstruktorze 2. przenieść weryfikację licencji do głównej metody biblioteki. Jakie rozwiazanie jest bardziej eleganckie? Teoretycznie w jednej instancji obiektu główną metodę można wywołać wiele razy więć chyba nie ma sensu, aby za kazdym razem licencję sparwdzać (co troszke trwa) i zrobić to raz w konstruktorze? Czyżby nikt nie wiedział, czy też moje pytanie było mało sensowne? Bardzo proszę o cenne wskazówki |
|
|
5.06.2013, 13:46:26
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Obiekt można utworzyć bez wywołania konstruktora, a inne operacje niezwiązane ze sprawdzaniem licencji, które mogą się w nim znaleźć najprawdopodobniej dałoby się odwzorować przy pomocy mechanizmu refleksji. IIRC ionCube udostępnia jakieś narzędzia związane z licencjonowaniem, raczej z nich powinieneś skorzystać.
PS. Kod zaszyfrowany ionCubem o ile dobrze pamiętam da się rozkodować do całkiem przystępnej postaci. Może lepiej zainteresuj się jakimś rozwiązaniem opartym o architekturę SaaS? |
|
|
6.06.2013, 18:43:55
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 3.06.2013 Ostrzeżenie: (0%) |
Dziękuję za odpowiedź.
Słyszałem, że IONCube jest dość podatny na rozkodowanie, ale jak ktoś się już za to weźmie to znaczy, że jawnie i z "premedytacją" chce złamać licencje biblioteki. Tak więc chyba warto zakodować nawet niedoskonałym narzędziem niż zostawić w plain text gdzie ktoś "przez przypadek" mógłby złamać licencję. Pozostawiam już kwestię czy w ogóle jest sens chronić moją bibliotekę SaaS w tym przypadku odpada i nie chciałbym korzystać z licencjonowania IONCube tylko z własnych metod. Reasumując Jak rozumiem warto sprawdzanie licencji dodać w głównej metodzie (bez której biblioteka nie ma sensu), niż w konstruktorze nawet z "final" bo nawet taki konstruktor się da ominąć przy tworzeniu obiektu? |
|
|
7.06.2013, 14:27:09
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Według mnie tracisz jedynie czas i co gorsza, tworzysz sobie fałszywe poczucie bezpieczeństwa. Wrzucenie zakodowanego fragmentu sprawdzającego licencję oraz ewentualnie wykonującego jakieś inne operacje będzie bardzo łatwe do ominięcia. Wszelkie "modyfikatory" OOP (pola/metody/klasy prywatne, finalne itp.) służą jedynie wygodzie programistów, nie stanowią żadnego zabezpieczenia.
Od lat firmy starają się tworzyć wymyślne zabezpieczenia swoich produktów, a jaki jest rezultat ich zmagań każdy wie. Jeżeli jednak faktycznie chcesz się jakoś zabezpieczyć (czy raczej utrudnić przechwycenie kodu) skorzystaj z rozbudowanych narzędzi firm, które się w tym specjalizują. |
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 11:15 |