Python är känt för sin läsbarhet och utbredda användning, vilket underlättar samarbete. Denna läsbarhet innebär dock också en ökad risk för otillåten åtkomst och missbruk. Dina konkurrenter eller illvilliga aktörer kan enkelt replikera dina algoritmer och proprietära logik om du inte vidtar lämpliga skyddsåtgärder. Detta kan i sin tur påverka integriteten hos din programvara och användarnas förtroende negativt.
MUO-VIDEO FÖR DAGEN
SCROLL FÖR ATT FORTSÄTTA MED INNEHÅLL
Genom att implementera starka säkerhetsåtgärder, som kodförvrängning (obfuskering) och licensverifiering, kan du skydda din programvara mot potentiella hot. Att skydda dina Python-skript är inte bara en bra vana, det är en viktig strategi för att bevara konfidentialiteten i dina innovationer och upprätthålla användarnas förtroende i den digitala världen.
Förstå Pyarmor
Pyarmor är ett kommandoradsverktyg som hjälper dig att skydda och obfuskera Python-skript och paket. Det omvandlar din ursprungliga Python-kod till en form som är svårare att dechiffrera samtidigt som funktionaliteten bevaras. Under obfuskeringsprocessen byts namn på variabler, funktioner och klasser till icke-beskrivande namn. Kommentarer tas också bort, och koden struktureras om. Detta gör koden betydligt svårare att bakåtkonstruera, manipulera eller kopiera.
Pyarmor kan säkra enskilda Python-skript såväl som hela paket och till och med lägga till licensverifiering till din kod.
Installera Pyarmor-biblioteket
Pyarmor finns tillgängligt på Python Package Index (PyPI). Du kan installera det med hjälp av pip genom att köra följande kommando:
pip install pyarmor
Det är inte nödvändigt att installera Pyarmor i samma katalog som ditt projekt. Du kan installera det var som helst på din dator och använda det för att säkra Python-skript från vilken katalog som helst.
Men om du vill köra de skyddade skripten utan att behöva installera Pyarmor på måldatorn, behöver du installera det i samma katalog som ditt projekt. Detta beror på att de skyddade skripten refererar till Pyarmors körningsmiljö, som måste finnas tillgänglig för att skripten ska fungera.
Säkra enskilda Python-skript
Att säkra enskilda skript med Pyarmor är enkelt. Vi kommer att använda ett enkelt skript som adderar två tal som exempel.
def add_numbers(num1, num2):
result = num1 + num2
print("Summan av {} och {} är: {}".format(num1, num2, result))
num1 = float(input("Ange första talet: "))
num2 = float(input("Ange andra talet: "))
add_numbers(num1, num2)
Använd kommandotolken för att navigera till den katalog där du har installerat Pyarmor. Kör sedan följande kommando för att kryptera och obfuskera ditt skript. Ersätt `main.py` med namnet på ditt skript.
pyarmor gen --output dist main.py
När kommandot har körts skapar Pyarmor en ny mapp med namnet `dist`. I den mappen finns ditt skyddade skript.
Öppna det skyddade skriptet för att se innehållet.
Skärmdumpen ovan visar utdata efter att Pyarmor har obfuskerat och krypterat det enkla additionskriptet. Du kan inte längre se vad skriptet gör bara genom att titta på koden.
För att köra det skyddade skriptet öppnar du kommandotolken och navigerar till platsen som innehåller `dist`-katalogen. Använd sedan följande kommando för att köra skriptet:
python dist/main.py
Ersätt `main.py` med namnet på ditt skript. Skriptet ska nu köras som vanligt. Testa noga att alla funktioner fungerar som de ska.
Skydda hela Python-paket
Ett paket kan innehålla några få moduler eller hundratals, beroende på syftet. Att skydda varje modul separat kan vara tidskrävande. Lyckligtvis har Pyarmor möjlighet att skydda ett helt paket utan att du behöver specificera varje modul separat.
Anta att du har ett enkelt Python-paket som heter `sample_package` med följande struktur:
sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py
Du kan lägga till så många moduler du behöver.
För att kryptera och obfuskera paketet öppnar du kommandotolken och navigerar till katalogen där ditt paket finns. Kör sedan följande kommando:
pyarmor gen -O dist -r -i sample_package
Ersätt `sample_package` med namnet på ditt paket. Det här kommandot kommer att kryptera och obfuskera hela paketet och spara utdata i `dist`-katalogen. Använd det skyddade paketet som du normalt skulle använda vilket Python-paket som helst.
Till exempel, för att använda paketet i exemplet ovan skapar du ett nytt skript i `dist`-katalogen:
from my_package import module1, module2module1.say_hello()
module2.do_something()
När du kör koden ska paketet fungera precis som innan du skyddade det.
Styra åtkomst till dina skript
Ibland vill du kanske begränsa hur länge en användare kan köra ditt skript, till exempel under en provperiod.
För att begränsa hur länge skriptet kan köras använder du följande kommando när du obfuskerar ditt skript:
pyarmor gen -O dist -e 30 main.py
Ersätt `30` med antalet dagar du vill att skriptet ska vara aktivt. Du kan också använda ett exakt datum istället. När tiden har gått ut kommer skriptet inte längre att fungera.
Du kan testa den här funktionen genom att ange ett tidigare datum. Om du gör det ska skriptet ge ett felmeddelande när du försöker köra det. Använd följande kommando för att obfuskera skriptet med ett utgångsdatum:
pyarmor gen -O dist -e 2022-01-01 main.py
Kör sedan det skyddade skriptet.
Felmeddelandet visar att licensnyckeln har löpt ut, och därför kan skriptet inte köras.
Balansera säkerhet och effektivitet
Även om Pyarmor erbjuder robusta obfuskeringsmekanismer för att öka säkerheten för din kod, är det viktigt att hitta en balans mellan säkerhetsåtgärder och att bibehålla effektivitet och prestanda i din programvara. Du kan åstadkomma det genom att:
- Utvärdera behovet av obfuskering: Om din programvara innehåller proprietära algoritmer, känslig data eller unik affärslogik är obfuskering mycket fördelaktigt. Men för skript med öppen källkod och minimala immateriella rättigheter kan det vara bättre att fokusera på effektivitet snarare än säkerhet.
- Bedöma prestandapåverkan: Obfuskering medför en extra prestandakostnad på grund av de ytterligare operationer och omvandlingar som tillämpas på koden. Denna påverkan är liten för små skript men blir mer märkbar för större projekt. Du bör noga utvärdera prestandan efter obfuskering och utföra tester för att säkerställa att din programvara fortsätter att vara snabb och effektiv.
- Genomföra regelbundna uppdateringar och underhåll: Uppdatera regelbundet din obfuskerade kod, licenser och säkerhetsmekanismer för att ligga steget före potentiella sårbarheter. Balansera detta med behovet att minimera störningar för dina användare.
Kan någon knäcka den obfuskerade koden?
Programknäckning innebär att man tar bort kopieringsskyddet eller licensmekanismerna för en programvara för att få otillåten tillgång till dess funktioner utan att betala. Det är viktigt att notera att obfuskering av din programvara inte gör den helt säker från knäckning.
Med tillräckligt med beslutsamhet och resurser kan obfuskerad kod knäckas. Därför är det viktigt att genomföra regelbundna uppdateringar och underhåll för att korrigera eventuella säkerhetsluckor.