Làm cách nào để bảo vệ mã nguồn php của tôi?

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$299

Cả 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.ini

Thê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 client

Ghi 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.php

Lệ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(); ?>0

Ghi 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(); ?>1

e) 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

Làm cách nào để ẩn mã nguồn PHP của tôi?

Ẩn PHP ¶ . By setting expose_php to off in your php. ini, bạn giảm lượng thông tin có sẵn cho chúng . Để điều này hoạt động hiệu quả, bạn phải đổi tên các tệp PHP của mình bằng các phần mở rộng ở trên. Mặc dù đây là một hình thức bảo mật thông qua che khuất, nhưng đây là một biện pháp phòng ngừa nhỏ với một vài nhược điểm.

Tôi có thể mã hóa mã PHP của mình không?

bolt_decrypt(mã_mã_mã_hóa,_khóa_mã_hóa) thao tác này sẽ thực thi mã php. Bước 2. Tải xuống tập lệnh mã hóa PHP. Sau đó thay đổi đường dẫn mã nguồn, khóa mã hóa và các tệp bị loại trừ. Sau đó chạy tập lệnh mã hóa trong máy chủ hoặc máy chủ cục bộ của bạn.

Làm cách nào để mã hóa mã nguồn HTML trong PHP?

Bạn không thể mã hóa đầu ra HTML được gửi tới người dùng của mình . Họ sẽ không thể tải trang web nếu bạn làm vậy. Nếu bạn lo lắng về việc họ nhìn thấy mã PHP, bạn không cần phải lo lắng về điều đó. Họ sẽ không bao giờ nhìn thấy mã PHP - nó được máy chủ xử lý và chuyển thành HTML trước khi gửi tới máy khách.

Làm cách nào để bảo vệ mã nguồn laravel?

Trình mã hóa nguồn Laravel .
Lúc đầu, Bạn phải cài đặt phpBolt
Yêu cầu gói với trình soạn thảo bằng lệnh sau. nhà soạn nhạc yêu cầu --dev sbamtr/laravel-source-encrypter
Đối với Laravel. Nhà cung cấp dịch vụ sẽ tự động được đăng ký. .
Bước 4 (Tùy chọn).
Ví dụ sử dụng

Chủ đề