![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Macie jakiś pomysł w jaki sposób zabezpieczyć licencyjność aplikacji napisanych w php? Nie znam się za bardzo na wyrażeniach regularnych więc to raczej odpada (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Chodzi o generację klucza licencyjnego oraz późniejsze sprawdzenie, czy jest prawidłowy... Pozdrowienia |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Metody na zabezpieczenie aplikacji poza zastosowaniem doatkowego oprogramowania na serwerze nie ma.
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1. Generujesz APPLICATION-KEY w php
2. Zapisujesz go do bazy 3. Podczas instalacji skryptu trzeba podać klucz 4. Łączy się z Twoją www i sprawdza czy klucz był już rejestrowany (istnieje w bazie ale bez pola installed=1) 5. Jeżeli installed=0 to zmieniamy jego wartość na 1 i pozwalamy na instalację a jeżeli nie to kończy się instalacja (usuwają się wszystkie pliki z serwera prócz index.php/install.php Generowanie:
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
A jak zmusisz usera zeby nie wycial ze skryptu kodu sprawdzajacego KEYa?
Problem byl juz omawiany: nie da sie zabezpieczyc. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Dzięki @Tiraeth mniej więcej o to chodziło...
@dr_bonzo nie miejmy wszystkich userów za tak genialnych jak my sami (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Możesz przecież dać część instalacji ze swojego własnego serwera przez NET, a wówczas skrypty znajdowały się będą nie u usera tylko u Ciebie. Myślę, że jakieś dodatkowe zabezpieczenie jednego rekordu bazy też rozwiąże problem - tak, żeby user nie mógł zmieniać sam pola installed. Coś się wykombinuje (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Można też dodać, że skrypt musi pobrać jeden plik (np. mysql.db) z serwera i pójdzie przez POST'a (hidden: filename=md5('http://serwer.pl/d1o1w1n1l1o1a1d/mysql.db')) i wtedy pobiera plik razem ze sprawdzeniem czy KEY jest prawidłowy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Trzeba dużo kombinować (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Można też inaczej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jest coś takiego jak KOMPILATOR php... zmienia kod .php na plik wykonywalny .exe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tam zrobić formularz do zarejestrowania klucza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Z tego pliku nie wytnie się kodu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i wtedy dopiero można przeprowadzić instalację z serwera (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) przykładowy kod sprawdzający klucze (plik tekstowy) key.php
keys.txt Kod 12345-67890-abcde-fghij|+|NO|+| 00000-11111-22222-33333|+|YES|+| (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Np. coś takiego można umieścić (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował Tiraeth 9.02.2005, 14:06:39 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
To się i tak mija z celem.
@Fibolg - niczego nie wykombinujesz |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
@NuLL lubię wyzwania... tak na prawdę chodzi o samo przyznawanie kluczy - aplikacja zazwyczaj instalowana będzie przeze mnie także to ja będę miał nad nią pełną władzę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
@Tiraeth masz gdzieś linka do tego? Podobno jest jakaś free wersja, ale ja albo znajduję stronki z 404, albo z płatnymi wersjami kompilatorów... |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 607 Pomógł: 23 Dołączył: 8.09.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
nawet jak zabieczycie instalkę, to jaka jest pewność, że ktoś nie zainstaluje produktu na własną rękę (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) ?
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Przypuszczam, że takie samo jak z produktami MS (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Fakt licencji pozostaje faktem - Twoje prawa zabezpiecza tekst ustawy o prawie autorskim i pokrewnych. Licencja sprzedana bądź po prostu pirat!
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 12.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie, chciałbym odnowić troszkę temat.
Problem jest taki, że ten kod nie przyjmuje innych kluczy, działa tylko na 0. Czy ktoś mógłby mi wytłumaczyć co w nim jest źle? Będę bardzo wdzięczny. Do pliku instalacji dodałem kod odpowiedzialny za wczytywanie tam pliku key.php: Plik instalacyjny, wywołanie: Cytat $plik = file_get_contents('http://domena.pl/serwis/install/key.php'); echo '<br /><br />'; highlight_string($plik); Plik key.php wygląda tak: Cytat <?php if($_POST['klucz'] = 2) { echo '<form name=\"key\" method=\"POST\" action=\"key.php\"> Klucz: <input type=\"text\" name=\"klucz\"><br /> <span style=\"color:silver\">np. 1A2B3-C4D5E-6F7G8-H9I10</span><br /> <input type=\"submit\" value=\"AKTYWUJ\"></form>'; die(); } # baza z kluczami $keyBase = 'http://domena.pl/serwis/install/keys.txt'; $keys = file($keyBase); foreach($keys as $id => $key) { $hlp = explode('|+|', $key); $klucz = $hlp[0]; $used = $hlp[1]; $klucze['key_'.$id] = $klucz; $klucze['used_'.$id] = $used; } if($id = array_search($_POST['klucz'], $klucze)) { list($what, $ide) = explode('_', $id); $klucz = $klucze['key_'.$ide]; $uzyty = $klucze['used_'.$ide]; } else { die('Nieprawidlowy klucz!'); } if($uzyty == 'YES') { echo 'Klucz zostal juz uaktywniony!'; } elseif($uzyty == 'NO') { echo 'Twoj klucz ('.$_POST['klucz'].') jest prawidlowy!'; } ?> Plik keys.txt wygląda tak: Cytat 0|+|YES|+|
1|+|YES|+| 2|+|NO|+| Ten post edytował jamal18181818 12.06.2012, 15:33:51 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
Przypisanie w dwóch ifach.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 12.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mrr kolejny temat o kluczach autoryzacji w PHP (odgrzany kotlet). Tyle lat istnienia języka, a nadal znajdują się osoby które uważają że to coś pomoże. Czytam te wasze pomysły, świetne, nawet klucze można sobie dla lasnu wystylizować na te ala MS, tylko powiedźcie... co w wypadku jak klient będzie chciał to zainstalować na maszynie lokalnej bez dostępu do netu? Zapewniacie support telefoniczny? Tylko to nadal nie zmienia faktu ze aplikacji zainstalować się bez połączenia najzwyczajniej nie da.
Dlatego zamiast kombinować z bzdurną filozofią generowania kluczy dla produktów (o ile nie jest to cześć aplikacji, np. gry komputerowej, w formie urozmaicenia rozrywki) to skupcie się na ulepszaniu kodu jaki napisaliście (IMG:style_emoticons/default/smile.gif) Ten post edytował !*! 12.06.2012, 16:01:22 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Temat stary jak świat. Jeśli wydajność nie jest najważniejsza dla klienta, to najlepiej tak zbudować aplikację, aby najważniejsze funkcjonalności były obsługiwane przez zdalną usługę na waszym serwerze np. poprzez curl i OAuth lub OpenID / SOAP. Reszta to kwestia Waszej implementacji i fantazji. Najważniejsza w takim podejściu jest oczywiście konieczność autoryzacji i system tokenów z krótkim cyklem życia oraz fakt, iż bez komunikacji z Waszą maszyną aplikacja stanie się bezużyteczna. To wszystko da się sensownie zrobić tylko nie w każdej sytuacji i nie przy każdym projekcie.
//edit Można w ogóle zbudować aplikację w postaci usługi sieciowej (klienta) komunikującego się z Waszym serwerem. Ten post edytował darko 12.06.2012, 17:00:57 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Ty nigdy nie używałeś piratów?
Dostaniesz za swoją pracę zapłatę? To nie przejmuj się piratami, jakimiś kluczami, wystarczy licencja, żeby wsparcie prawne w razie czego było. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 10:37 |