Galbūt nenorėsite, kad jūsų svarbiausius Python scenarijus apverstų kenkėjiški veikėjai. Štai kaip galite tai apsaugoti.
Python yra gerai skaitomas ir plačiai naudojamas. Nors šis skaitomumas skatina bendradarbiavimą, jis padidina neteisėtos prieigos ir netinkamo naudojimo riziką. Jūsų konkurentai ar kenkėjiški veikėjai gali atkartoti jūsų algoritmus ir patentuotą logiką be tinkamų apsaugos priemonių. Tai neigiamai paveiks jūsų programinės įrangos vientisumą ir vartotojų pasitikėjimą.
Įdiegus patikimas saugos priemones, pvz., užtemdymą ir licencijos patikrinimą, jūsų programinė įranga apsaugoma nuo galimų grėsmių. Python scenarijų apsauga nėra tik praktika; tai yra labai svarbi strategija siekiant užtikrinti jūsų naujovių konfidencialumą ir išlaikyti vartotojų pasitikėjimą skaitmenine aplinka.
Pyarmor supratimas
Pyarmor yra komandų eilutės biblioteka. Tai padeda apsaugoti ir užmaskuoti Python scenarijus ir paketus. Jis paverčia pradinį Python kodą į formą, kurią sunkiau suprasti, išlaikant jo funkcionalumą. Užmaskavimo procesas pervadina kintamuosius, funkcijas ir klases į neaprašomuosius pavadinimus. Jis taip pat pašalina komentarus ir pertvarko kodą. Dėl to kodą sunku pakeisti, sugadinti ar kopijuoti.
Pyarmor gali apsaugoti atskirus Python scenarijus ir visus paketus ir netgi pridėti licencijos patvirtinimą prie jūsų kodo.
Pyarmor bibliotekos įdiegimas
Pyarmor yra įtrauktas į Python paketų indeksą (PyPI). Norėdami įdiegti, naudokite pip paleisdami šią komandą:
pip install pyarmor
Nebūtina įdiegti Pyarmor tame pačiame kataloge, kuriame yra jūsų projektas. Galite įdiegti jį bet kurioje savo kompiuterio vietoje ir apsaugoti visus Python scenarijus iš bet kurio katalogo.
Tačiau jei norite paleisti apsaugotus scenarijus neįdiegę „Pyarmor“ tiksliniame kompiuteryje, turite jį įdiegti tame pačiame kataloge, kuriame yra jūsų projektas. Taip yra todėl, kad apsaugotuose scenarijuose bus nuorodų į Pyarmor vykdymo laiką, kuris turės būti, kad būtų galima paleisti scenarijus.
Atskirų Python scenarijų apsauga
Atskirų scenarijų apsauga naudojant Pyarmor yra paprasta. Šis scenarijus, kuris prideda du skaičius, bus pavyzdys.
defadd_numbers(num1, num2):
result = num1 + num2
print("The sum of {} and {} is: {}".format(num1, num2, result))
# Example usage
num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
add_numbers(num1, num2)
Norėdami naršyti, naudokite komandų eilutę į katalogą, kuriame įdiegėte Pyarmor. Tada paleiskite šią komandą, kad užšifruotumėte ir užblokuotumėte savo scenarijų. Pakeiskite pagrindinis.py su savo scenarijaus pavadinimu.
pyarmor gen --output dist main.py
Paleidęs komandą, Pyarmor sukuria naują aplanką pavadinimu raj. Jo viduje yra jūsų apsaugotas scenarijus.
Atidarykite apsaugotą scenarijų, kad pamatytumėte jo turinį.
Aukščiau pateiktoje ekrano kopijoje rodoma išvestis po to, kai Pyarmor užmaskuoja ir užšifruoja paprastą pridėjimo scenarijų. Dabar negalite suprasti, ką daro scenarijus, tiesiog pažvelgę į jį.
Norėdami paleisti apsaugotą scenarijų, atidarykite terminalą arba komandų eilutę ir eikite į vietą, kurioje yra raj katalogas. Tada naudokite šią komandą, kad paleistumėte scenarijų:
python dist/main.py
Pakeiskite pagrindinis.py su savo scenarijaus pavadinimu. Scenarijus turėtų būti paleistas taip, kaip būtų, be trikdžių. Kruopščiai išbandykite, kad įsitikintumėte, jog visos funkcijos veikia taip, kaip tikitės.
Visų Python paketų apsauga
Paketuose gali būti keli moduliai arba šimtai modulių, priklausomai nuo jų paskirties. Kiekvieno modulio apsauga atskirai gali būti nuobodu. Laimei, „Pyarmor“ turi galimybę apsaugoti visą paketą, nenurodant kiekvieno modulio atskirai.
Tarkime, kad turite paprastą Python paketą pavyzdys_paketas su tokia struktūra:
sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py
Tu gali sukurkite tiek modulių, kiek norite.
Norėdami užšifruoti ir užmaskuoti paketą, atidarykite terminalą arba komandų eilutę ir eikite į katalogą, kuriame yra jūsų paketas. Tada paleiskite šią komandą:
pyarmor gen -O dist -r -i sample_package
Pakeiskite pavyzdys_paketas su savo paketo pavadinimu. Ši komanda užšifruos ir užtemdys jūsų paketų katalogą ir išsaugos apsaugotą išvestį į raj katalogas. Naudokite apsaugotą paketą kaip ir bet kurį kitą Python paketą.
Pavyzdžiui. Norėdami naudoti aukščiau pateiktą pavyzdinį paketą, sukurkite naują scenarijų raj katalogas:
from my_package import module1, module2
module1.say_hello()
module2.do_something()
Kai paleidžiate kodą, paketas turėtų veikti taip, kaip prieš jį apsaugodamas.
Prieigos prie scenarijaus valdymas
Galbūt norėsite apriboti laiką, kurį vartotojas paleidžia jūsų scenarijų. Pavyzdžiui, bandomuoju laikotarpiu.
Norėdami apriboti scenarijaus vykdymo laiką, naudokite šią komandą, kai užtemdote scenarijų.
pyarmor gen -O dist -e 30 main.py
Pakeiskite 30 su dienų skaičiumi, kurį norėtumėte, kad scenarijus būtų aktyvus. Taip pat galite jį pakeisti tikslia data. Pasibaigus dienoms, scenarijus nustos galioti.
Galite išbandyti šią funkciją nustatydami ankstesnę datą. Tai turėtų priversti scenarijų paleisti klaidą. Norėdami užtemdyti scenarijų, kurio galiojimo laikas pasibaigęs, naudokite šią komandą:
pyarmor gen -O dist -e 2022-01-01 main.py
Tada paleiskite apsaugotą scenarijų.
Klaida rodo, kad pasibaigė licencijos rakto galiojimo laikas, todėl scenarijaus negalima paleisti.
Saugumo ir efektyvumo pusiausvyra
Nors „Pyarmor“ siūlo patikimus užtemdymo mechanizmus, kad padidintų jūsų kodo saugumą, taip yra svarbu išlaikyti pusiausvyrą tarp saugumo priemonių ir efektyvumo bei našumo palaikymo programinė įranga. Tai galite pasiekti:
- Užtemdymo poreikio įvertinimas: jei jūsų programinė įranga apima patentuotus algoritmus, neskelbtinus duomenis arba unikalią verslo logiką, užmaskavimas yra labai naudingas. Tačiau atvirojo kodo scenarijuose su minimaliomis intelektinės nuosavybės problemomis kompromisas tarp saugumo ir našumo labiau priklauso nuo efektyvumo.
- Veiklos poveikio įvertinimas: Obfuskacija suteikia papildomų vykdymo laiko sąnaudų dėl papildomų operacijų ir kodo transformacijų. Šis poveikis yra nereikšmingas mažiems scenarijams, bet tampa labiau pastebimas didesniems projektams. Turėtumėte atidžiai įvertinti supainiojimo poveikį našumui ir atlikti testavimą, kad įsitikintumėte, jog jūsų programinė įranga išlieka jautri ir efektyvi.
- Reguliarus atnaujinimas ir priežiūra: reguliariai atnaujinkite užmaskuotą kodą, licencijas ir saugos mechanizmus, kad išvengtumėte galimų pažeidžiamumų. Subalansuokite tai su poreikiu sumažinti naudotojų trikdžius.
Ar kas nors gali nulaužti užmaskuotą kodą?
Programinės įrangos nulaužimas reiškia programinės įrangos apsaugos nuo kopijavimo arba licencijavimo mechanizmų pašalinimą. Siekdami gauti neteisėtą prieigą prie visų jo funkcijų nemokant už tai. Svarbu pažymėti, kad programinės įrangos užtemimas visiškai neapsaugo jos nuo krekingo.
Turint pakankamai ryžto ir išteklių, užtemdytas kodas gali būti nulaužtas. Dėl šios priežasties turėtumėte stengtis reguliariai atnaujinti ir prižiūrėti, kad pataisytumėte visas įtariamas spragas.