Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zabezpieczenie skryptu - dyskusja
Fifi209
post 23.02.2010, 13:23:25
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Zastanawia mnie od pewnego czasu jakie zabezpieczenia ma np. forum vBulletin kiedyś mieli opcje wykupienia licencji na np. rok i tutaj pytanie jak po roku zablokować dostęp użytkownikowi i przypomnieć mu, że musi zakupić nową (o ile dalej chce korzystać) ?

Myślałem nad rozwiązaniem i wpadło mi coś takiego do głowy:

Klient kupuje licencje ode mnie na powiedzmy rok, po zakupie trzeba go zarejestrować on podaje nazwę użytkownika, hasło i adres e-mail a ja mu po rejestracji podaję webkey.

W skrypcie, który On dostanie powiedzmy jest coś takiego:
[PHP] index.php - pobierz, plaintext
  1. <?php
  2. // to u użytkownika
  3.  
  4. $user = 'fifi209';
  5. $password = 'haselko';
  6. $webkey = '4e80787acff8c3136e69e4a36ae3dd0s';
  7.  
  8. $handle = fopen('http://domena/'.urlencode(strtolower($user)).'/'.urlencode(md5($password)).'/'.urlencode($webkey).'/', 'r');
  9. $status = fgets($handle, 2);
  10.  
  11. if ($status == 0) {
  12. exit();
  13. }
  14.  
  15. echo 'Ok';
  16.  
  17. fclose($handle);
  18.  
  19.  
  20. ?>
[PHP] index.php - pobierz, plaintext


.htaccess
Kod
RewriteEngine On
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/([a-zA-Z0-9]+)/$ access.php?user=$1&pass=$2&webkey=$3 [L]


[PHP] access.php - pobierz, plaintext
  1. // to u mnie na serwie
  2. <?php
  3.  
  4. $mysql = mysql_connect('localhost', 'fifi', 'haha.gif');
  5. mysql_select_db('testy', $mysql);
  6.  
  7. $sql = 'SELECT `time` FROM `users` WHERE `name` = "'.$_GET['user'].'" AND `password` = "'.$_GET['pass'].'" AND `webkey` = "'.$_GET['webkey'].'" LIMIT 1';
  8.  
  9. $select = mysql_fetch_assoc(mysql_query($sql));
  10.  
  11. if ($select['time'] > time()) {
  12. echo 1;
  13. }else{
  14. echo 0;
  15. }
  16.  
  17.  
  18. ?>
[PHP] access.php - pobierz, plaintext


I baza:
  1. CREATE TABLE `users` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `name` varchar(40) collate utf8_polish_ci NOT NULL,
  4. `password` varchar(45) collate utf8_polish_ci NOT NULL,
  5. `mail` varchar(55) collate utf8_polish_ci NOT NULL,
  6. `webkey` varchar(45) collate utf8_polish_ci NOT NULL,
  7. `time` int(10) UNSIGNED NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=0 ;


Hmm, część która sprawdza status byłaby oczywiście jakoś zakodowana.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
marcio
post 23.02.2010, 16:21:27
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Ja wymyslilem kiedys cos innego fakt nie zaimplementowalem ale kolega korzysta i dziala.
W instalatorze kodu lub ogolnie przy pierwszym wywolaniu kodu wysylasz do twojej glownej aplikacji adres www strony ktora go uruchomila a w twojej bazie oczywiscie masz podstawowe dane klienta i za pomoca takiego zapytania:
  1. SELECT www,expire FROM clients WHERE www = "www.jakas-strona.pl" LIMIT 1

Po czym w bazie mamy adres strony klienta i date jej pierwszego uruchomienia bez dev'a.
Daje nam to 2 mozliwosci.
1.Sprawdzanie za ile licencja sie konczy jesli ty nie dajesz ja na stale tylko na np: 1 rok
2.Czy dany klient nie sprzedal np twojego oprogramowania/licencji komus innemu widac to po stronie www jeden klient = strona www a nie klient = n stron www.
Cos takiego kiedys wymyslilem, dokladnie teraz nie pomietam bo nigdzie tego nie rozpisalem ale teraz mniej wiecej bym to tak zrobil, tym bardziej ze jak nie zakodujesz kodu tym cube czy jak mu tam bylo to taki klient latwo moze sie skapowac ze $user,$password,$webkey sluza do kontroli a jak np napisz klase ktora co 1 miesiac albo 1 tydzien bedzie sprawdzala waznosci itp nikt sie nie skapnie bo przewaznie klient = laik.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Puciek
post 23.02.2010, 16:55:51
Post #3


TAO programowania


Grupa: Zarejestrowani
Postów: 340
Pomógł: 3
Dołączył: 25.03.2003
Skąd: ze słoika

Ostrzeżenie: (30%)
XX---


Nie zabezpieczaj.

Ktos kto chce zlamac, zrobi to. Zamiast tego zaoferuj dosc bonusowych featerow zeby oplacalo sie miec wersje legalna.


--------------------

http://puciek.wordpress.com prywatnie o świecie
Go to the top of the page
+Quote Post
bełdzio
post 24.02.2010, 13:57:37
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(fifi209 @ 23.02.2010, 13:23:25 ) *
W skrypcie, który On dostanie powiedzmy jest coś takiego:


czyli usuwamy ten kawałek kodu i już mamy wersję bez limitu czasowego. ionCube z tego co kojarzę pozwala określić licencję czasową


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 04:09