2009-10-11 3 views
6

Tôi có một số mã nguồn PHP mà tôi đang lưu trữ với công ty lưu trữ XYZ. Tôi đang sử dụng một phần mềm mã hóa PHP như Zend Guard hoặc ionCube để bảo vệ nguồn khỏi bị ai đó xem (sysadmin hoặc hacker tấn công sysadmin).Mã hóa nguồn PHP - Hiệu quả và bất lợi

  • Làm thế nào dễ dàng/khó là nó cho một người có quyền truy cập đầy đủ vào hệ thống (như sysadmin hoặc của hacker mà hacks sysadmin) để giải mã nguồn? Tôi không biết làm thế nào phần mềm mã hóa làm việc, nhưng tôi giả sử họ sử dụng một số khóa, mà sẽ phải ở lại trên máy chủ và do đó có thể truy cập vào một sysadmin hoặc một hacker. Nếu bạn có kiến ​​thức kỹ thuật về cách thực hiện, đừng ngần ngại đưa ra giải thích trong câu trả lời của bạn.

  • Việc sử dụng mã hóa nguồn như vậy có làm chậm trang web không? Nếu ai có kinh nghiệm đầu tay hoặc biết từ ai đó mà có nhiều kinh nghiệm đầu tay;)

Tôi quan tâm đến các khía cạnh kỹ thuật của việc này, làm thế nào có hiệu quả mã hóa là .. và nhược điểm của nó, từ những người sử dụng chúng hoặc xem xét việc sử dụng chúng

Cảm ơn (tất cả các câu trả lời hữu ích/bình luận đang lên bình chọn)

Edit: câu trả lời dường như cho đến nay để được bỏ qua những gì tôi đang cố gắng để hiểu .. tôi đang cố gắng để hiểu hiệu quả của mã hóa. Tôi không thực sự có bất kỳ mã nào cần bảo vệ khỏi những kẻ xấu, ở trên chỉ là một ví dụ, vì vậy lời khuyên như nguồn mở hoặc thuê luật sư không thực sự giải quyết được sự tò mò về kỹ thuật của tôi .. A + cho bất kỳ ai nhận điểm

+10

Nếu bạn không tin tưởng công ty lưu trữ của mình, đừng sử dụng chúng. Nếu bạn không tin tưởng bất kỳ công ty hosting nào, thì hãy là chủ nhà của riêng bạn. Nếu bạn không tin tưởng chính mình ... –

+6

không ai quan tâm đến mã của bạn – hop

+0

tại sao bạn muốn làm điều này? Paranoia? – Peter

Trả lời

7

Mã hóa (hoặc bộ mã hóa) đề án cố gắng ẩn mã của bạn dưới dạng tệp được mã hóa. Rõ ràng, mã phải được giải mã tại thời gian thực hiện, điều này làm tăng thêm chi phí vô ích. Một số trong số này cũng nhấn mạnh rằng hệ thống máy chủ cài đặt thói quen đặc biệt, mà các hosters mạnh mẽ không thích, bởi vì họ không muốn thiết lập cấu hình đặc biệt chỉ dành cho bạn.Nhưng phần xấu là chúng chứa các hạt giống của việc hoàn tác của riêng chúng: để chạy trên máy chủ đích, chúng phải chứa phần mềm giải mã. Vì vậy, nếu bạn sử dụng một, bạn cung cấp rất decryptor cần thiết để có được ở mã của bạn. Nó chỉ là vấn đề định vị nó; một khi được tìm thấy, mã của bạn hoàn toàn có thể giải mã và được hiển thị. Đây chỉ đơn giản là không an toàn.

Obfuscation các mưu đồ tranh giành tên của số nhận dạng, xóa nhận xét và định dạng. Nhưng mã obfuscated chạy chính xác như bản gốc, không có phí và không cần hỗ trợ thời gian chạy đặc biệt. Obfuscators phụ thuộc vào khó khăn vốn có trong việc hiểu các chương trình nói chung. Các chương trình đủ khó để hiểu khi nào chúng được thiết kế tốt, tên cũng được chọn, và có những nhận xét tốt trong mã. Tất cả chúng ta đều hy vọng các chương trình của chúng ta được thiết kế tốt, nhưng nếu những cái tên xấu và những bình luận đã biến mất, chúng sẽ khó hiểu. Kiểm tra trải nghiệm của riêng bạn với mã của người khác.

Mọi người sẽ nói, "nhưng bất kỳ ai cũng có thể kiểm tra mã bị xáo trộn và hiểu nó". Đó là sự thật nếu bạn có một ứng dụng nhỏ. Nếu ứng dụng của bạn có bất kỳ quy mô nào (hàng chục trang mã), điều đó rất khó để hiểu nó đang làm gì khi tất cả các tên biến được tranh giành. Mã của bạn càng lớn, obfuscation tốt hơn là bảo vệ nó.

Nếu bạn muốn xem ví dụ về những gì một obfuscator PHP nào, hãy xem Thicket PHP Obfuscator của chúng tôi.

+0

+1 để có giải thích tuyệt vời. Là điểm về quy mô quan sát của riêng bạn hoặc là nó tài liệu ở đâu đó? – Chris

+2

Đó là quan sát của tôi, nhưng tôi nghĩ rộng rãi được chấp nhận bởi cộng đồng kỹ thuật đảo ngược.Nếu bạn có một chương trình lớn, được thiết kế tốt, có tài liệu thì khó hiểu. Có rất nhiều công cụ để giúp mọi người "hiểu" mã không bị xáo trộn, và hầu hết mọi người sẽ cho bạn biết những công cụ đó thực sự không hoạt động tốt. –

0

điều duy nhất bạn có thể làm đối với các công ty lưu trữ là phải có một giấy phép tốt và luật sư

+0

bạn có nghĩa là luật sư? – hop

1

Nếu nó có thể được thực hiện nó có thể được dịch ngược. Gắn bó với nhóm pháp lý của bạn để có quyền truy cập, chứ không phải mã hóa :) Tốt hơn, hãy mở nguồn dự án của bạn: P

EDIT: 'Mã hóa' cũng tăng thêm thời gian thực hiện!

2

Tại sao chính xác bạn cần mã hóa mã nguồn của mình? Nếu bạn thể thao điều này như một người bảo vệ an toàn chống lại những kẻ tấn công tiềm năng, thì hãy tin khi tôi nói rằng nếu họ thực sự muốn giải mã mã nguồn của bạn, họ sẽ làm điều đó. Có thể với ionCube, lần cuối tôi kiểm tra.

Theo như tác động hiệu suất, tôi tin rằng Zend nhanh hơn một chút so với ionCube do nó không yêu cầu bất kỳ tệp bổ sung nào. Nhưng như tôi đã nói, không dựa vào mã hóa cho bất cứ thứ gì.

+0

Cảm ơn cuối cùng đến một người đã có câu hỏi của tôi :) Vì vậy, tôi cần những gì để giải mã và mất bao lâu? – Chris

+1

Điều đó phụ thuộc; có các dịch vụ thực hiện việc này với một khoản phí và có một phần mềm được gọi là Dezender có thể giải mã các tệp. Tuy nhiên, tôi không muốn đi vào các bước thực tế của mã kỹ thuật đảo ngược. –

+0

Có điều gì đó tương tự có sẵn cho ionCube không. Điều này là dành cho một dự án edu, không sử dụng bên ngoài. – Chris

-1

Theo như tôi biết, bộ mã hóa PHP không thực sự mã hóa mã PHP của bạn. Họ chỉ thay đổi tên biến và thêm mã rác không cần thiết, để nó trở thành rất khó cho bất cứ ai để tìm hiểu, những gì các mã nào. Vấn đề là họ không thể ẩn bất kỳ mật khẩu nào (có thể là mật khẩu quản trị viên được mã hóa cứng hoặc dữ liệu kết nối cơ sở dữ liệu).

Vì vậy, chúng không đảm bảo rằng mã của bạn an toàn, chúng chỉ làm cho mọi người khó hiểu mã của bạn.

+0

Tôi nghĩ rằng những người thay đổi tên biến và thêm rác là obfuscators, không? Tôi nghĩ những người mã hóa đã làm điều gì đó khác, họ đã sử dụng chìa khóa hay thứ gì đó và được cho là tốt hơn ở những gì họ phải làm, phải không? – Chris

7

Cả Zend Guard lẫn ionCube đều không sử dụng mã hóa, theo nghĩa toán học, để bảo vệ mã của bạn. Những gì họ làm, ngoại trừ obfuscation đã được mô tả bởi câu trả lời khác, là mã hóa.

Đây là một quá trình thường được thực hiện tự động bởi trình thông dịch PHP mỗi khi kịch bản của bạn được truy cập - tập lệnh PHP của bạn được biên dịch thành định dạng bytecode, sau đó được thực thi. Những bộ mã hóa như Zend Guard và ionCube cơ bản là một quá trình tương đương, chỉ có nó được thực hiện một lần, và sau đó chỉ bytecode "biên dịch" được tạo sẵn/tải lên máy chủ.

Điều này có nghĩa là thực sự tạo lại cùng một mã mà bạn đã viết là hoàn toàn không thể. Những gì không phải là không thể, và điều này đi cho obfuscation là tốt, là đảo ngược kỹ thuật biên dịch hoặc obfuscated mã để tìm ra những gì nó đang làm.

Để tóm tắt, tôi muốn nói rằng các sản phẩm này là rất tốt bảo vệ bạn đang - như trái ngược với việc bảo vệ bạn Logic.

+0

Nghe có vẻ như điều này sẽ có lợi ích hiệu suất đáng kể, là trường hợp? –

+1

Tôi không chắc chắn, nhưng tôi nghĩ vậy. Các sản phẩm như Zend Optimizer sử dụng kỹ thuật này để đạt được lợi ích hiệu suất của chúng, và tôi không thể thấy tại sao bạn không nhận được kết quả tương tự với Zend Guard. – eliego