2011-11-10 7 views
8

हमारे पास कई जावाईई 6 एप्लिकेशन (.war फाइलें) हैं जिन्हें हमें रिवर्स इंजीनियरिंग के खिलाफ सुरक्षा की आवश्यकता है, लेकिन ऐसा लगता है कि कई विकल्प उपलब्ध नहीं हैं।मैं जावाईई 6 .war फाइलों के रिवर्स इंजीनियरिंग को कैसे रोक सकता हूं?

मुझे JarCrypt/JInstaller उत्पादों में उपयोग की गई एन्क्रिप्टेड .jar फ़ाइल (SJAR) का विचार पसंद है, लेकिन यह स्पष्ट नहीं है कि जारक्रिप्ट/जेइन्स्टलर जावाईई 6 ऐप में काम करेगा। ग्लासफिश 3.1 जैसे सर्वर। एन्क्रिप्टेड एसजेएआर फ़ाइलों को कस्टम क्लासलोडर का उपयोग करके मूल पुस्तकालय द्वारा डिक्रिप्ट किया जाना चाहिए, इसलिए स्पष्ट रूप से मुझे ग्लासफ़िश में एक कस्टम क्लासलोडर जोड़ना होगा।

क्या किसी ने JInstaller/JarCrypt तकनीकों का उपयोग किया है? क्या वे एक एप्लीकेशन सर्वर में काम करते हैं?

मैंने obfuscation भी देखा है, लेकिन जावाईई अनुप्रयोगों के लिए बहुत सारी समस्याएं हैं। मुझे अकेले सभी वेब सेवाओं और जेएनडीआई लुकअप छोड़ना होगा। A.b.c.MyClass.class जैसी चीजों का उपयोग (यानी log4j लॉगर्स बनाने के लिए) समस्याग्रस्त है। लॉग फाइलें पढ़ना मुश्किल हो जाता है। और उन सभी समस्याओं के लिए obfuscation हमारे कोड को सुरक्षित करने के लिए कुछ भी नहीं करता है।

मैंने प्रोगुआर्ड की कोशिश की है, लेकिन स्पष्ट रूप से यह can't deal with the JavaEE 6 libraries है।

क्या मेरे पास अन्य विकल्प हैं या ये मेरे सभी विकल्पों के बारे में हैं?

धन्यवाद।

+0

पर आपके प्रश्न का उत्तर प्राप्त हुआ? अगर यह कहां पोस्ट कर सकता है तो यह gr8 होगा – Saurabh

+0

क्या आपने जारक्रिप का उपयोग किया था? – Saurabh

उत्तर

2

क्या आप उन ऐप्स को तीसरे पक्ष को भेज रहे हैं जो इसे अपने बुनियादी ढांचे पर चलाएंगे? फिर एन्क्रिप्शन आपकी मदद नहीं करेगा, क्योंकि JVM एन्क्रिप्टेड बाइटकोड निष्पादित नहीं कर सकता है, और it is trivial to retrieve the loaded class files from a running app

GuardIT for Java पर एक नज़र डालें - आज तक मुझे इसका कोई अनुभव नहीं हुआ है, लेकिन कम से कम विक्रेता का दावा है कि यह विशेष रूप से जावा वेब ऐप्स की सुरक्षा के लिए डिज़ाइन किया गया है।

यदि आपके ऐप्स टॉमकैट पर चलते हैं, तो आप उन्हें मूल कोड पर संकलित कर सकते थे। या क्या उन्हें एक पूर्ण जावा ईई ऐप सर्वर चाहिए?

-1

रोकथाम वास्तव में असंभव है। सबसे अच्छा आप उम्मीद कर सकते हैं कि बाधा को थोड़ा बढ़ाएं जो काफी हद तक परिणामस्वरूप एक मिस रखेगा, अच्छा कारक Security through obscurityno security at all है। उत्पाद जो ऐसा करने का दावा करते हैं वे वास्तव में silicon snake oil

1

मैं पिछले दो वर्षों से सॉफ्टवेयर सुरक्षा पर काम कर रहा हूं और मैंने बाजार पर अधिकांश यूरोपीय समाधानों का मूल्यांकन किया है (क्षमा करें, हम अमेरिकी समाधान से बचते हैं ...)। - कहानियो - एन्क्रिप्शन - संकलन मूल कोड के लिए - Transcoding

आप शायद ट्रांसकोडिंग के अलावा इन तकनीकों के सबसे पता :

चार तकनीक है कि हम सुरक्षा समाधान के रूप में देखा है रहे हैं।

Obfuscation के अंत में, खराब सुरक्षा के लिए बहुत सारे काम की आवश्यकता है। लेकिन आप obfuscation और अन्य सभी तकनीकों के साथ गठबंधन कर सकते हैं।

एन्क्रिप्शन तोड़ना बहुत आसान है (सुरक्षित क्षेत्र में कुंजी को स्टोर करने के लिए कोई समाधान नहीं है; यहां तक ​​कि एक डोंगल के साथ भी इसे पुनर्प्राप्त करना आसान है)। इसके अलावा, स्मृति से डिक्रिप्टेड कक्षाओं को चोरी करने के लिए चारों ओर एक काम है (या, अधिक सीधे, एन्क्रिप्शन कुंजी)।

अधिकांश जावा डेवलपर्स सोचते हैं कि देशी कोड में संकलन अच्छी सुरक्षा प्रदान करता है ... लेकिन, यह सुरक्षा प्रदान नहीं करता है; 20 से अधिक वर्षों के लिए मूल कोड को उलटना संभव हो गया है और ऐसा करने के लिए कुछ बहुत ही कुशल रिवर्स-इंजीनियरों हैं। मदद करने के लिए सी भाषा में कुछ अच्छे रिवर्स-कंपाइलर भी हैं ...

अंत में, ट्रांसकोडिंग है (जिसमें इंटरनेट पर बहुत कम जानकारी है)। कुशल रिवर्स-इंजीनियरों के खिलाफ यह एकमात्र कुशल सुरक्षा है। यह तोड़ने का दर्द है क्योंकि इसे काम के वर्षों की आवश्यकता होती है। यह असंभव नहीं है लेकिन बहुत लंबे समय तक मांग करता है .. आगे, हर बार एक नया पैच जारी किया जाता है, आपको फिर से रिवर्स इंजीनियरिंग को पुनरारंभ करना होगा क्योंकि प्रत्येक रिलीज पर, कोड पूरी तरह से अलग है। क्या कोई कमी है? हाँ, प्रदर्शन। लेकिन इसे अन्य सभी तकनीकों के साथ जोड़ा जा सकता है और कोई तैनाती सीमाएं नहीं हैं (एप्लिकेशन सर्वर, गतिशील वर्ग पीढ़ी, आदि) या जावा सीमाएं (प्रतिबिंब, आदि)।

कोई चांदी की बुलेट नहीं है। प्रत्येक समाधान का उपयोग आपके लक्ष्य के आधार पर किया जा सकता है। किसी सरकार या स्क्रिप्ट किड्स के खिलाफ सुरक्षा एक जैसी नहीं है ... पेशेवरों और विपक्ष के सापेक्ष एक समाधान चुनें, और अधिक महत्वपूर्ण बात यह है कि सापेक्ष सीमाएं (जैसे वेब एप्लिकेशन पर जैक्रिप और ओबफ्यूसेशन)।

जेक्रिप्प (और एन्क्रिप्शन करने वाले अन्य समाधान) के बारे में प्रश्न के उत्तर देने के लिए, यह संभव है: आपको केवल क्लाइंटलोडर (JInstaller/Jarcryp प्रदान करने) के लिए पूछने की आवश्यकता है जो आपको क्लासलोडर देता है जो एप्लिकेशन सर्वर क्लास लोडर से प्राप्त होता है तुम इस्तेमाल।

ट्रांसकोडिंग सभी एप्लिकेशन सर्वरों के साथ काम करता है।

0

प्रोगार्ड का उपयोग कर WAR फ़ाइल obfuscation आपको आपकी युद्ध फ़ाइल को काफी हद तक एन्क्रिप्ट करने में मदद करेगा। अधिक जानकारी के लिए लिंक http://bratonfire.blogspot.in/2012/01/war-file-obfuscation-using-proguard.html

+0

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। – Cleb

संबंधित मुद्दे