2011-11-10 34 views
8

Chúng tôi có một số ứng dụng JavaEE 6 (các tệp .war) mà chúng tôi cần phải bảo vệ chống lại kỹ thuật đảo ngược, nhưng dường như không có nhiều tùy chọn có sẵn.Làm thế nào tôi có thể ngăn chặn kỹ thuật đảo ngược của các tệp Javawar 6 .war?

Tôi thích ý tưởng của tệp .jar được mã hóa (SJAR) được sử dụng trong các sản phẩm JarCrypt/JInstaller, nhưng không rõ JarCrypt/JInstaller có hoạt động trong ứng dụng JavaEE 6 hay không. máy chủ như Glassfish3.1. Các tệp SJAR được mã hóa phải được giải mã bởi một thư viện riêng bằng cách sử dụng trình nạp lớp tùy chỉnh, vì vậy dường như tôi sẽ phải thêm một trình nạp lớp tùy chỉnh cho Glassfish.

Có ai đã sử dụng công nghệ JInstaller/JarCrypt không? Chúng có hoạt động trong Máy chủ ứng dụng không?

Tôi cũng đã xem xét sự làm xáo trộn, nhưng đối với các ứng dụng JavaEE, có rất nhiều vấn đề. Tôi sẽ phải rời khỏi tất cả các dịch vụ web và tra cứu JNDI một mình. Sử dụng những thứ như a.b.c.MyClass.class (tức là để tạo log4j Logger) là vấn đề. Đọc các tệp nhật ký trở nên khó khăn. Và đối với tất cả những vấn đề đó, obfuscation không làm gì để bảo mật mã của chúng ta.

Tôi đã thử Proguard nhưng dường như là can't deal with the JavaEE 6 libraries.

Có lựa chọn thay thế nào khác hay đây là tất cả các tùy chọn tôi có?

Cảm ơn.

+0

bạn có nhận được câu trả lời cho câu hỏi của mình không? nó sẽ được gr8 nếu bạn có thể đăng nó ở đây – Saurabh

+0

Bạn đã sử dụng JarCryp? – Saurabh

Trả lời

2

Bạn có đang chuyển các ứng dụng đó cho bên thứ ba sẽ chạy trên cơ sở hạ tầng của họ không? Sau đó mã hóa sẽ không giúp bạn chút nào, bởi vì JVM không thể thực thi mã bytecode và it is trivial to retrieve the loaded class files from a running app.

Hãy xem GuardIT for Java - cho đến nay tôi không có kinh nghiệm với nó, nhưng ít nhất nhà cung cấp tuyên bố nó được thiết kế đặc biệt để bảo vệ các ứng dụng Web Java.

Nếu ứng dụng của bạn chạy trên Tomcat, bạn có thể đã biên dịch chúng xuống mã gốc. Hay họ cần một máy chủ ứng dụng Java EE đầy đủ?

-1

Phòng ngừa thực sự là không thể. Điều tốt nhất bạn có thể hy vọng là nâng cao rào cản một chút mà chủ yếu là kết quả là việc bỏ lỡ đặt yếu tố cảm thấy tốt Security through obscurityno security at all. Các sản phẩm yêu cầu thực hiện điều này thực sự là việc bán hàng silicon snake oil

1

Tôi đã làm việc về bảo vệ phần mềm trong hai năm qua và tôi đã đánh giá hầu hết các giải pháp của châu Âu trên thị trường (xin lỗi, chúng tôi tránh các giải pháp của Mỹ ...).

Có bốn kỹ thuật mà chúng ta đã thấy như các giải pháp bảo vệ: - Obfuscation - Encryption - Sưu tập để mã gốc - Chuyển mã

Bạn có thể biết hầu hết các kỹ thuật ngoại trừ để chuyển mã.

Tội phạm đòi hỏi nhiều việc phải làm, cuối cùng, bảo vệ kém. Nhưng bạn có thể kết hợp obfuscation và với tất cả các kỹ thuật khác.

Mã hóa khá dễ phá vỡ (không có giải pháp để lưu khóa trong khu vực an toàn; ngay cả với Dongle, nó rất dễ truy xuất). Hơn nữa, có một công việc xung quanh để ăn cắp các lớp được giải mã từ bộ nhớ (hoặc, trực tiếp hơn, khóa mã hóa).

Hầu hết các nhà phát triển Java đều nghĩ rằng việc biên dịch thành mã gốc cung cấp sự bảo vệ tốt ... Nhưng, nó không cung cấp sự bảo vệ nào cả; trong hơn 20 năm, nó đã có thể đảo ngược mã nguồn gốc và có một số kỹ sư đảo ngược rất có tay nghề cao để làm điều này. Ngoài ra còn có một số trình biên dịch ngược lại tốt cho ngôn ngữ C để giúp ...

Cuối cùng, có Mã hóa (trong đó có rất ít thông tin trên internet). Đây là sự bảo vệ hiệu quả duy nhất chống lại các kỹ sư đảo ngược có kỹ năng. Đó là một nỗi đau để phá vỡ bởi vì nó đòi hỏi nhiều năm làm việc. Nó không phải là không thể nhưng đòi hỏi một thời gian rất, rất dài .. Hơn nữa, mỗi khi một bản vá mới được phát hành, bạn phải khởi động lại kỹ thuật đảo ngược một lần nữa vì tại mỗi bản phát hành, mã hoàn toàn khác nhau. Có nhược điểm nào không? Vâng, hiệu suất. Nhưng nó có thể được kết hợp với tất cả các kỹ thuật khác và không có giới hạn triển khai (máy chủ ứng dụng, tạo lớp động, vv) hoặc các giới hạn Java (phản chiếu, vv).

Không có dấu đầu dòng bạc. Mỗi giải pháp có thể được sử dụng tùy thuộc vào mục tiêu của bạn. Bảo vệ chống lại một chính phủ hoặc chống lại kịch bản kiddies là không giống nhau ... Chọn một giải pháp liên quan đến ưu và khuyết điểm, và quan trọng hơn, hạn chế tương đối (như Jarcryp và obfuscation trên ứng dụng web).

Để trả lời câu hỏi về Jarcryp (và các giải pháp khác để mã hóa), có thể: bạn chỉ cần yêu cầu Componio (cung cấp JInstaller/Jarcryp) để cung cấp cho bạn trình nạp lớp kế thừa từ trình nạp lớp máy chủ ứng dụng bạn dùng.

Chuyển mã hoạt động với tất cả các máy chủ ứng dụng.

0

Làm hỏng tệp tin WAR bằng cách sử dụng ProGuard sẽ giúp bạn mã hóa tệp chiến tranh của mình ở mức độ lớn. Để biết thêm chi tiết, hãy truy cập liên kết http://bratonfire.blogspot.in/2012/01/war-file-obfuscation-using-proguard.html

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – Cleb

Các vấn đề liên quan