Theo hiểu biết tốt nhất của tôi, bạn không may mắn với điều này. Tạo ra 'mã hóa' PHP là một công việc kinh doanh và các giải pháp nguồn mở cũng sẽ không/không cắt giảm nó (từ những giải pháp tôi tìm thấy, tôi mất chưa đầy 10 phút để đánh bại họ vì tất cả những gì họ thực sự làm là viết mã . Thay thế eval bằng echo khiến việc đánh bại trở nên tầm thường. Cái tốt nhất tôi thấy đã sử dụng các biến ma thuật như __LINE__ để ngăn chặn loại điều này, nhưng vẫn khá dễ bị đánh bại đối với bất kỳ nhà phát triển PHP có kinh nghiệm nào khi bạn nhận thấy điều này. )
IonCube vẫn còn khá khó bị đánh bại, bạn phải trả cho ai đó từ $5 - $8 cho mỗi tệp để giải mã nó. Nếu bạn có nhiều tệp. đây là rào cản tài chính. Họ cũng có các tùy chọn cấp phép để bạn có thể ngăn mã được sao chép/dán vào các máy chủ khác và chỉ cần chạy nguyên trạng
Làm thế nào để bảo vệ mã nguồn PHP? . Nhiều nhà phát triển PHP cần bảo vệ mã nguồn ứng dụng của họ trước khi phân phối nó cho khách hàng của họ và gây khó khăn cho những người khác sửa đổi nó mà không có sự cho phép của họ. Nếu bạn là một nhà phát triển như vậy thì hướng dẫn này sẽ giải thích cách sử dụng bộ mã hóa PHP để bảo vệ mã nguồn của bạn. Tôi cũng sẽ trình bày cách sử dụng bộ mã hóa phpBolt bằng một ví dụ
Các phương pháp bảo vệ mã nguồn PHP
Có một số kỹ thuật để bảo vệ mã nguồn PHP
- Làm cho mã khó đọc – liên quan đến việc thu nhỏ và che giấu
- Mã hóa mã nguồn
Kỹ thuật đầu tiên liên quan đến thu nhỏ và che giấu - điều này làm cho mã rất khó đọc. Quá trình thu nhỏ liên quan đến việc xóa nhận xét của nhà phát triển, khoảng trắng và ngắt dòng. Tuy nhiên, các định danh có ý nghĩa (tên biến, tên hàm, lớp, ký hiệu PHP tích hợp) được sử dụng trong mã có thể giúp người thứ ba hiểu mã mà không tốn nhiều công sức và nếu không, chỉ mất vài phút để giảm thiểu mã. Tuy nhiên, khả năng đọc có thể thực sự khó khăn khi thu nhỏ được kết hợp với che giấu. Việc che giấu liên quan đến việc đổi tên các mã định danh có ý nghĩa bằng các tên khó hiểu ngẫu nhiên, do đó làm cho mã nguồn khó đọc và khó hiểu. Có một số công cụ có sẵn trực tuyến để thu nhỏ và làm xáo trộn mã PHP
Ví dụ làm xáo trộn
Mã nguồn gốc
<?php function get_username() { echo "henry"; } get_username(); ?>Một mã bị xáo trộn sẽ giống như dưới đây
<?php function xyz123() { echo "henry"; } xyz123(); ?>Từ mã bị xáo trộn ở trên, bạn sẽ thấy tên hàm <?php function xyz123() { echo "henry"; } xyz123(); ?>2 bị xáo trộn thành một tên vô nghĩa chẳng hạn như<?php function xyz123() { echo "henry"; } xyz123(); ?>3
Cảnh báo
Đôi khi, che giấu có thể sửa đổi mã đến mức mã không thể thực thi đúng cách. Vì vậy, điều quan trọng là phải loại trừ một số hàm và biến nhất định có thể không hoạt động sau khi mã hóa. Đây là danh sách loại trừ khỏi Zend Guard
Phương pháp thứ hai liên quan đến việc mã hóa mã nguồn và phân phối gói được mã hóa cho khách hàng. Nhưng phương pháp này yêu cầu một trình tải hoặc tiện ích mở rộng được tải tại trang khách để giải mã các tệp nguồn PHP được mã hóa. Có rất ít bộ mã hóa PHP thương mại có sẵn trên thị trường với giá dao động từ $250 đến $600
Danh sách các bộ mã hóa PHP
TênNền tảng được hỗ trợCác phiên bản PHP được hỗ trợObfuscationEncodingPriceZendWin, Linux, MacPHP v5. 0 +YY$600/nămCubeWin, Linux, BSD miễn phí, OS XUpto PHP 7. 2YY$255-$509SourceGuardianWin, Linux, BSD miễn phí, OS XPHP 4-7. 3NY$199NuCoderWinPHP 4. x & 5. xYN$299Cả hai kỹ thuật này đều giúp bảo vệ mã nguồn PHP, nhưng nó ngăn chặn việc phân phối ứng dụng. Do đó, lý do là hầu hết các bộ mã hóa thương mại đều có tính năng khóa, cho phép khóa ứng dụng vào một địa chỉ IP, tên miền, địa chỉ phần cứng cụ thể hoặc một URL trang web. Một số bộ mã hóa nhất định cũng cho phép đặt ngày hết hạn để cung cấp phiên bản dùng thử cho ứng dụng của bạn
Có bộ mã hóa PHP mã nguồn mở nào không?
Không nhiều, có thể là do phiên bản mã nguồn mở của bộ mã hóa PHP sẽ dễ dàng có sẵn để mọi người tạo bộ giải mã phải không?
Bộ mã hóa PHP miễn phí
Bộ mã hóa miễn phí có tên là phpBolt giúp bạn không phải mua bộ mã hóa thương mại. phpBolt giúp bảo vệ mã nguồn PHP của bạn bằng cách mã hóa và giải mã mã bằng khóa
Cách sử dụng bộ mã hóa phpBolt
Bước 1. Tải xuống tiện ích mở rộng phpBolt
Để sử dụng phpBolt, bạn cần tải tiện ích mở rộng trình tải xuống. Tìm kiếm <?php function xyz123() { echo "henry"; } xyz123(); ?>4 bên trong thư mục nền tảng tương ứng. Ví dụ: nếu bạn đang sử dụng phiên bản 64 bit của Linux và PHP phiên bản 7. 3, thì bạn cần sử dụng <?php function xyz123() { echo "henry"; } xyz123(); ?>4 nằm trong thư mục – <?php function xyz123() { echo "henry"; } xyz123(); ?>6
Bước 2. cài đặt bu lông. nên mở rộng
Sao chép <?php function xyz123() { echo "henry"; } xyz123(); ?>4 từ thư mục nền tảng tương ứng vào thư mục lưu trữ tất cả các tiện ích mở rộng PHP. Trong trường hợp của tôi, <?php function xyz123() { echo "henry"; } xyz123(); ?>8 là thư mục lưu trữ tất cả các phần mở rộng PHP
Mở <?php function xyz123() { echo "henry"; } xyz123(); ?>9 như bên dưới
# vim /etc/php.iniThêm tiện ích mở rộng <?php function xyz123() { echo "henry"; } xyz123(); ?>4
extension='/absolute-path/bolt.so'Nhớ thay thế # vim /etc/php.ini1 bằng đường dẫn của tiện ích mở rộng
Trong trường hợp của tôi,
extension='/etc/httpd/modules/bolt.so'Bây giờ bạn đã thiết lập thành công tiện ích mở rộng trình tải bu lông
Bước 3. Kiểm tra tập tin mã hóa mẫu
Tải xuống chương trình hello world được mã hóa mẫu và đặt nó vào trong thư mục gốc của máy chủ web của bạn. Sau khi hoàn tất, hãy xem nhanh chương trình PHP được mã hóa. Nó sẽ trông giống như dưới đây
<?php /** * define('PHP_BOLT_KEY', 'kyc7fh'); We want give key to client */ define('PHP_BOLT_KEY', 'kyc7fh'); bolt_decrypt( __FILE__ , PHP_BOLT_KEY); return 0; ##!!!##i4psiIu8tLxssa+0u2xztLG4uLtsw7u+uLBzh2w=- Dòng chứa hằng số # vim /etc/php.ini2 chứa khóa dùng để mã hóa chương trình PHP
- # vim /etc/php.ini3 sẽ giải mã mã PHP được mã hóa và thực thi nó
- Và những gì bạn thấy ở dòng cuối cùng là mã PHP được mã hóa
Đó là nó. Bây giờ hãy thử thực hiện # vim /etc/php.ini4 và xem đầu ra mong muốn trong trình duyệt web
Vì vậy, làm thế nào mà làm việc đó?
Bước 4. Mã hóa mã PHP
Ở bước 3, chúng tôi đã thực hiện một chương trình PHP được mã hóa mẫu. Nhưng làm cách nào để bạn mã hóa chương trình PHP tùy chỉnh của mình?
Để mã hóa chương trình PHP của bạn, bạn cần tải tập lệnh mã hóa xuống từ liên kết này. Tìm biểu mẫu tải xuống ở cuối trang, nơi bạn sẽ cần nhập email và tên của mình và nhấp vào nút "Tải xuống". Bạn sẽ nhận được email có liên kết để tải xuống gói – gói này sẽ chứa tiện ích mở rộng trình tải, chương trình được mã hóa mẫu và tập lệnh mã hóa
a) Hãy chú ý đến # vim /etc/php.ini7 – đây là tập lệnh mã hóa giúp bạn mã hóa mã nguồn của mình
b) Mở # vim /etc/php.ini7 và thay đổi các dòng cần thiết như hình bên dưới
<?php /** * src : source folder * encrypted : Output folder */ $src = 'src/'; //Source folder that contains the source code of your PHP application $php_blot_key = "kyc7fh"; //Key to encrypt & decrypt PHP source code. You will be sharing this key with the clientGhi chú. Hãy nhớ đặt khóa tùy chỉnh của bạn để mã hóa. Khóa trên chỉ là ví dụ sử dụng
Đợi đã, một thay đổi nhỏ phải được thực hiện trong tệp # vim /etc/php.ini7, để hằng số # vim /etc/php.ini2 đặt đúng giá trị khóa trong tất cả các tệp được mã hóa. Bởi vì, # vim /etc/php.ini7 đã tải xuống không đặt khóa đúng cách. Để làm điều đó, hãy tìm dòng bên dưới (dòng 46 – số dòng có thể thay đổi trong phiên bản sau)
$preppand = '<?php bolt_decrypt( __FILE__ , PHP_BOLT_KEY); return 0; ##!!!##';và thay thế nó bằng cái bên dưới
$preppand = "<?php bolt_decrypt( __FILE__ ,'". PHP_BOLT_KEY . "'); return 0; ##!!!##";Việc thay thế ở trên đảm bảo rằng # vim /etc/php.ini2 được đặt chính xác trong tất cả các tệp PHP được mã hóa
c) Thực hiện # vim /etc/php.ini7. Đảm bảo tệp này được sao chép hoặc hiển thị bên trong thư mục ứng dụng mà bạn muốn mã hóa. Nếu không, thì bạn cần đặt đường dẫn tuyệt đối cho thư mục ứng dụng của mình trong biến extension='/absolute-path/bolt.so'4 (tùy theo lựa chọn của bạn)
$php encrypt.phpLệnh trên sẽ đọc biến $src và mã hóa tất cả các tệp PHP nằm trong thư mục đã cho. Sau khi hoàn tất, một thư mục extension='/absolute-path/bolt.so'5 sẽ được tạo chứa tất cả các tệp PHP được mã hóa
<?php function xyz123() { echo "henry"; } xyz123(); ?>0Ghi chú
Bạn cũng có thể thực thi # vim /etc/php.ini7 qua trình duyệt
d) Bây giờ, hãy tìm các tệp được mã hóa bên trong thư mục extension='/absolute-path/bolt.so'5. Bạn có thể mở các tệp để xác nhận mã hóa
<?php function xyz123() { echo "henry"; } xyz123(); ?>1e) Thế thôi. Đóng gói tất cả các tệp bên trong thư mục được mã hóa và phân phối nó cho khách hàng của bạn
Cài đặt <?php function xyz123() { echo "henry"; } xyz123(); ?>4 tại máy chủ của khách hàng
Máy chủ khách phải có tiện ích mở rộng trình tải <?php function xyz123() { echo "henry"; } xyz123(); ?>4 được thêm vào <?php function xyz123() { echo "henry"; } xyz123(); ?>9 để thực thi các tệp được mã hóa bằng bộ mã hóa phpBolt
Bộ mã hóa phpBolt có tốt hơn bộ mã hóa thương mại không?
Tôi chưa sử dụng bất kỳ bộ mã hóa PHP thương mại nào, vì vậy tôi không biết, thành thật mà nói. Ngoài ra, một số người dùng phàn nàn rằng một số bộ mã hóa đã phá vỡ ứng dụng của họ. Vì vậy, nếu bạn muốn sử dụng bộ mã hóa PHP, hãy đảm bảo rằng bạn đã liệt kê những tệp bạn cần mã hóa và những tệp không nên và kiểm tra nó đúng cách trước khi chuyển nó đến trang web của khách hàng. Bạn nên đọc kỹ tài liệu trước khi sử dụng các công cụ mã hóa
Mặc dù phpBolt tạo một thư mục riêng để lưu trữ các tệp được mã hóa, tốt hơn hết là bạn nên sao lưu mã ứng dụng của mình trước khi thực thi tập lệnh # vim /etc/php.ini7
từ chối trách nhiệm
Hướng dẫn này chỉ dành cho mục đích thông tin. Công nghệ. com hoặc tác giả không sở hữu bất kỳ trách nhiệm nào trong trường hợp có sự cố/lỗi có thể xảy ra khi sử dụng các công cụ mã hóa. Chơi nó có nguy cơ của riêng bạn