Nu este un secret faptul că problema protecției script-ului dvs. php devine mai devreme sau mai târziu înainte de orice dezvoltator și astăzi voi arăta cum să protejez simplu și eficient meu skipt într-un exemplu practic - pe un modul simplu pentru DLE.
Cu mult timp în urmă am scris un modul simplu pentru afișarea informațiilor despre atașamente oriunde pe site - ShowAttach, dar modulul nu i-a adus în minte și nu l-au publicat. Aici luăm acest modul ca bază pentru protecție.
De asemenea, avem nevoie de mâini directe și de un sistem PCP-CS de la Oleg Mofsy.
Ce este pcp-cs
PCP-CS - Protecția codului PHP Client-Server. Cu alte cuvinte, aplicația client-server pentru legarea scripturilor la anumite restricții (domeniu, server ip etc.).
O schemă foarte simplificată arată astfel:
Instalarea și configurarea părții server a PCP-CS
pentru că La momentul scrisului, administratorul de sistem încorporat nu este suficient de funcțional, voi folosi un administrator de la o terță parte. scrise special pentru acest sistem.
Puteți să o configurați atât pe gazdă, cât și pe mașină locală. Pentru lokalki recomand OpenServer.
1. Descărcați din panoul de administrare githaba pe butonul "Download ZIP". Acesta conține deja cea mai recentă versiune a părții server a pcp-cs, deci în acest stadiu nu mai este nevoie de nimic.
2. Extrageți directorul de încărcare la root.
3. Rulați interogarea din sql.sql. Dacă este necesar să pornim imediat utilizatorul, atunci executăm interogarea:
datele de conectare și parola în acest caz vor fi admin, admin
4. Configurați fișierul config în trei fișiere:
admin / config / db_config.php - Configurarea bazei de date
admin / config / config.php - Configurarea administratorului
api / config.php - Configurația pcp-cs
Această separare se datorează independenței consiliului de administrație de la partea server a pcp-cs.
5. Totul!
Adinka este pregătită să muncească. Puteți continua să protejați modulul experimental.
Implementarea părții client
În primul rând, trebuie să configurați partea serverului.
Pentru a face acest lucru, vom crea o nouă metodă de verificare a datelor.
după crearea cu succes a metodei, mergeți la secțiunea "Licențe" și adăugați o nouă cheie de licență.
În consecință, primim o cheie de față, pe care apoi o puteți da cumpărătorului modulului.
Acum puteți implementa direct codul clientului!
Acum, modulul nostru de eșantionare eșantion (de altfel, nu recomand să îl folosiți pe proiecte live, deoarece nu a fost modificat în mod corespunzător și va cauza o creștere a încărcării în baza de date) arată astfel:
Iată aspectul ieșirii acestui modul:
Trebuie să blocăm scriptul dacă acesta este utilizat fără licență.
Mai întâi, adăugăm cheia parametrilor la configurația modulului, la care vom trimite cheia de licență primită.
și înfășurați codul de lucru în stare cu verificarea acestui parametru, precum și adăugați o condiție separată pentru afișarea mesajului despre cheia care lipsește.
Adăugați o cheie la șirul de conectare și verificați:
Acum trebuie să adăugați validarea cheii introduse cu pcp-cs.
Introducem codul clientului în modulul nostru. Pentru a salva resursele, vă recomand să comprimați codul clasei client prin orice instrument convenabil. Am folosit serviciul PHP-Minifier. Am inserat codul primit înainte de codul principal al modulului. Dacă se produce o eroare în timpul verificării:
ștergeți doar acest cod:
Câteva îmbunătățiri ale condițiilor:
Dacă totul se face corect - fișierul de licență va fi creat cu succes în folderul dorit, scriptul va funcționa. și în panoul de administrare PCP-CS, va apărea o intrare despre locul în care a fost activată cheia.
Pentru a verifica, încercați să schimbați datele cheii de licență în șirul de conectare.
Aici, de fapt, și întreaga procedură pentru implementarea modulului de protecție. Rămâne doar să codificați codul modulului în IonCube și să îl poți vinde sau oferi gratuit.
De asemenea, nu uitați că este mai bine să implementați posibilitatea cache-ului în modul și să verificați licența în absența cache-ului modulului, astfel încât resursele de găzduire să fie salvate și munca este accelerată.
După toate acțiunile, codul modulului ar trebui să arate astfel:
Ca un add-on