Bạn không muốn các tập lệnh Python quan trọng bị đảo ngược bởi những tác nhân độc hại. Dưới đây là cách bạn có thể bảo vệ nó.
Python rất dễ đọc và được sử dụng rộng rãi. Mặc dù khả năng đọc này khuyến khích sự hợp tác, nhưng nó làm tăng nguy cơ truy cập trái phép và sử dụng sai mục đích. Đối thủ cạnh tranh hoặc tác nhân độc hại có thể sao chép các thuật toán và logic độc quyền của bạn mà không có biện pháp bảo vệ thích hợp. Điều này sẽ ảnh hưởng tiêu cực đến tính toàn vẹn của phần mềm và lòng tin của người dùng.
Triển khai các biện pháp bảo mật mạnh mẽ, chẳng hạn như che giấu dữ liệu và xác minh giấy phép, củng cố phần mềm của bạn trước các mối đe dọa tiềm ẩn. Bảo vệ tập lệnh Python không chỉ là một việc theo thông lệ; đó là một chiến lược quan trọng để đảm bảo tính bảo mật cho những đổi mới của bạn và duy trì lòng tin của người dùng trong bối cảnh kỹ thuật số.
Pyarmor là gì?
Pyarmor là một thư viện dòng lệnh. Nó giúp bảo vệ và làm xáo trộn các tập lệnh cùng package Python. Nó biến đổi mã Python ban đầu thành một dạng khó hiểu hơn trong khi vẫn duy trì chức năng của nó. Quá trình che giấu đổi tên các biến, hàm và lớp thành các tên không mang tính mô tả. Nó cũng loại bỏ các bình luận và cấu trúc lại mã. Điều này làm cho mã khó đảo ngược, giả mạo hoặc sao chép.
Pyarmor có thể bảo mật từng tập lệnh Python riêng lẻ và toàn bộ package,thậm chí thêm xác thực giấy phép cho code của bạn.
Cài đặt thư viện Pyarmor
Pyarmor được liệt kê trên Chỉ mục gói Python (PyPI). Sử dụng pip để cài đặt nó bằng cách chạy lệnh sau:
pip install pyarmor
Bạn không cần phải cài đặt Pyarmor trong cùng thư mục lưu trữ dự án của mình. Bạn có thể cài đặt nó ở bất kỳ đâu trên máy tính và có thể bảo mật mọi tập lệnh Python từ thư mục mong muốn.
Tuy nhiên, nếu bạn muốn chạy các tập lệnh được bảo mật mà không phải cài đặt Pyarmor trên máy đích, bạn cần cài đặt nó trong cùng thư mục lưu trữ dự án của bạn. Điều này là do các tập lệnh được bảo mật sẽ chứa các tham chiếu đến thời gian chạy Pyarmor. Đây là điều kiện bắt buộc để chạy các tập lệnh.
Bảo mật từng tập lệnh Python
Bảo mật từng tập lệnh bằng Pyarmor khá đơn giản. Hãy cùng xem xét tập lệnh thêm hai số sau:
def add_numbers(num1, num2):
result = num1 + num2
print("The sum of {} and {} is: {}".format(num1, num2, result))
# Sử dụng
num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
add_numbers(num1, num2)
Dùng dòng lệnh để điều hướng tới thư mục mà bạn đã cài Pyarmor. Sau đó chạy lệnh sau để điều hướng tới thư mục mà bạn đã cài Pyarmor. Thay thế main.py bằng tên tập lệnh của bạn.
pyarmor gen --output dist main.py
Sau khi chạy lệnh nà, Pyarmor tạo một thư mục mới tên dist. Bên trong nó chứa tập lệnh bảo mật của bạn.
Mở script bảo mật để thấy nội dung của nó.
Ảnh chụp màn hình trên hiện kết quả sau khi Pyarmor làm xáo trộn và mã hóa tập lệnh bổ sung đơn giản. Bây giờ bạn không thể biết tập lệnh làm gì chỉ bằng cách nhìn vào nó.
Để chạy tập lệnh được bảo mật, hãy mở terminal hoặc dấu nhắc lệnh và điều hướng đến vị trí chứa thư mục dist. Sau đó sử dụng lệnh sau để chạy script:
python dist/main.py
Thay thế main.py bằng tên của script. Tập lệnh sẽ chạy như bình thường mà không bị xáo trộn. Hãy kiểm tra kỹ lưỡng để đảm bảo tất cả các chức năng đều hoạt động như bạn mong đợi.
Bảo vệ toàn bộ package Python
Package có thể chứa một số mô đun hoặc hàng trăm mô đun phụ thuộc vào mục đích của chúng. Bảo vệ từng mô đun thật sự mệt mỏi. May mắn thay, Pyarmor có khả năng bảo mật toàn bộ package.
Giả sử bạn có một package Python đơn giản tên sample_package với cấu trúc sau:
sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py
Bạn có thể tạo nhiều mô đun như ý muốn.
Để mã hóa và xáo trộn gói, hãy mở thiết bị đầu cuối hoặc dấu nhắc lệnh, rồi điều hướng đến thư mục chứa gói của bạn. Sau đó chạy lệnh:
pyarmor gen -O dist -r -i sample_package
Thay thế sample_package bằng tên của gói. Lệnh này sẽ mã hóa và làm xáo trộn thư mục gói của bạn và lưu đầu ra được bảo vệ vào thư mục dist. Sử dụng gói được bảo vệ như đối với bất kỳ gói Python nào khác.
Ví dụ, dùng package mẫu trên, tạo một script mới bên trong thư mục dist:
from my_package import module1, module2
module1.say_hello()
module2.do_something()
Khi chạy code này, package sẽ hoạt động như bình thường trước khi bảo mật nó.
Kiểm soát truy cập tới script
Bạn có thể muốn giới hạn thời gian người dùng chạy tập lệnh, chẳng hạn như trong thời gian dùng thử. Hãy dùng lệnh sau khi xáo trộn tập lệnh:
pyarmor gen -O dist -e 30 main.py
Thay 30 bằng số ngày bạn muốn tập lệnh hoạt động. Bạn cũng có thể thay thế nó bằng một ngày chính xác. Sau ngày đó, tập lệnh sẽ hết hạn.
Bạn có thể kiểm tra tính năng này bằng cách đặt một ngày trong quá khứ. Điều đó sẽ khiến việc chạy tập lệnh phát sinh lỗi. Sử dụng lệnh sau để xáo trộn tập lệnh có ngày hết hạn:
pyarmor gen -O dist -e 2022-01-01 main.py
Sau đó chạy script bảo mật sau:
Lỗi báo license key đã hết hạn, vì thế, tập lệnh không thể chạy.
Trên đây là những điều bạn cần biết về bảo mật script trong Python bằng Pyarmor. Hi vọng bài viết hữu ích với các bạn.