2010-04-09 8 views
13

मेरा हस्ताक्षर किए गए जावा एप्लेट जावा अपडेट 1 तक ठीक चल रहा है। अब कुछ नहीं, लेकिन जावा अपडेट 1 9 पर हमारे सभी उपयोगकर्ता जावा सुरक्षा संदेश की रिपोर्ट नहीं करते हैं जिसमें कहा गया है कि हमारे एप्लेट में हस्ताक्षरित और हस्ताक्षरित कोड दोनों शामिल हैं।जावा मुझे बताता है कि मेरे एप्लेट में हस्ताक्षरित और हस्ताक्षरित कोड दोनों शामिल हैं?

  1. स्वच्छ और NetBeans आईडीई में एप्लेट परियोजना बिल्ड:

    हमारे एप्लेट बनाने के लिए प्रक्रिया इस प्रकार है।

  2. WinRAR में ऐप्पल जार फ़ाइल खोलें और जार फ़ाइल में आवश्यक mysql जेडीबीसी ड्राइवर .class फ़ाइलों को जोड़ें।
  3. एप्लेट जार फ़ाइल पर हस्ताक्षर करें।

क्या कोई मुझे बता सकता है कि यह निर्धारित करने के लिए कि कौन सा कोड हस्ताक्षरित है और हमारे एप्लेट में कौन सा कोड हस्ताक्षरित नहीं है? क्या हमारे एप्लेट में माइस्क्ल जेडीबीसी ड्राइवर जार फ़ाइल को हमारे एप्लेट जार फ़ाइल में जार फ़ाइल सामग्री की प्रतिलिपि बनाने के अलावा कोई बेहतर तरीका है?

धन्यवाद

उत्तर

11

कुछ बातें की कोशिश करने के लिए:

  • जाओ जावा प्लगइन नियंत्रण कक्ष ($ JAVA_HOME/bin/ControlPanel)।
  • Advanced टैब पर जाएं।
  • विस्तृत Debug
  • चेक Enable tracing, Enable logging, और Show applet lifecycle exceptions
  • Java console
  • चेक Show console
  • क्लिक करें OK (या Close, अपने ओएस पर निर्भर करता है)

अपने एप्लेट लोड करता है जब विस्तार करें जावा कंसोल खुल जाएगा। उस पर क्लिक करें और तुरंत '5' दबाएं। यह आपके एप्लेट को चलाने के लिए जार और कक्षाएं लाएगा। इसमें कहीं एक संदेश होना चाहिए जो इंगित करता है कि जार या कक्षाओं को "हस्ताक्षरित" माना जाता है। यदि आप इसे पहली बार याद करते हैं, तो इसे फिर से प्रयास करने के लिए विंडो को फिर से लोड करें।

+1

भविष्य के संदर्भ के लिए इसे जोड़ना। जावा 1.6u20 में 1.6.0_1 9 में "class.getResource (" निर्देशिका/") के लिए मिश्रित कोड चेतावनी के रूप में प्रलेखित एक फिक्स शामिल है"। –

+2

इसमें कुछ ऐसा संदेश होना चाहिए जो इंगित करता है कि कौन से जार या कक्षाएं "हस्ताक्षरित" मानी जाती हैं संदेश क्या है? सुरक्षा: Istrusted: शून्य झूठी ?? – simpatico

+1

इसके लायक होने के लिए, यह समस्या 1.6.0_20 पर मशीन के लिए थी, फिर 1.6.0_24 के साथ चला गया, अब 1.6.0_25-b06 के लिए वापस आ गया है। क्या बिल्ली सूर्य है ?! दोनों जार एक ही समय में उसी प्रमाण के साथ हस्ताक्षर किए जाते हैं, मुझे यह नहीं मिलता है ... – jlarson

2

भरोसा मिश्रण और अविश्वस्त कोड एक साथ एक जोखिम है कि 6u19 में तय किया गया है (वर्तमान CPU/लेखन के समय एसएसआर विज्ञप्ति) है। See the docs. मिश्रण को अवरुद्ध करना या डीबगर का उपयोग करना दिखाना चाहिए कि समस्या कहां है।

+1

उपयोगी: विश्वसनीय-पुस्तकालय: सत्य – simpatico

+3

@simpatico उपयोगी अगर आप जानते हैं कि आप क्या कर रहे हैं। खतरनाक से अधिक यदि आप नहीं करते हैं। –

14

संपादित करें: जावा 7 में एक बग के कारण 45 अपडेट 45 आपको अपनी मेनिफेस्ट फ़ाइल में विश्वसनीय-लाइब्रेरी नहीं जोड़नी चाहिए। बस नई विशेषता कॉलर-स्वीकार्य-कोडबेस जोड़ें। अधिक जानकारी के लिए यह प्रश्न देखें: Java applet manifest - Allow all Caller-Allowable-Codebase

जावा 7 अपडेट 21 अप्रैल 16 2013 को जारी किया गया था और हमारे एप्लेट ने इस चेतावनी संवाद को दिखाना शुरू कर दिया था।

रिलीज नोट्स के अनुसार: जेडीके 7u21 के रूप में, जावास्क्रिप्ट कोड जो एक विशेषाधिकार प्राप्त एप्लेट के भीतर कोड को कॉल करता है उसे मिश्रित कोड के रूप में माना जाता है और हस्ताक्षरित जेएआर फ़ाइलों को विश्वसनीय-पुस्तकालय विशेषता के साथ टैग नहीं किया जाता है।

इसे ठीक करने के लिए अपना मैनिफेस्ट संपादित करें।एमएफ फ़ाइल और इस तरह की एक लाइन जोड़ें:

Trusted-Library: true 

हालांकि ऐसा करने से पहले आपको बहुत सावधान रहना चाहिए। यदि आपके हस्ताक्षरित एप्लेट को जावास्क्रिप्ट से बुलाया जा सकता है तो एक दुर्भावनापूर्ण उपयोगकर्ता संभावित रूप से आपके उपयोगकर्ताओं के कंप्यूटर पर हानिकारक चीजें कर सकता है।

अपने एप्लेट को सुरक्षित करने का एक त्वरित तरीका यह है कि इसे अन्य वेबसाइटों पर चलाने से रोका जाए। init() विधि में कोड डालकर ऐसा करें जो getCodeBase().getHost() पर देखता है और यदि यह आपकी साइट से मेल नहीं खाता है तो अपवाद फेंकता है।

जावा 7 अपडेट 25 उन साइटों को सीमित करने का एक और तरीका पेश करता है जहां आपका एप्लेट चलाया जा सकता है। आप इस तरह अपने मैनिफ़ेस्ट फ़ाइल में CODEBASE विशेषता सेट कर सकते हैं:

Codebase: test.example.com www.example.com 

जावा 7 अद्यतन 45 LiveConnect व्यवस्था करने के लिए और अधिक परिवर्तन (जावास्क्रिप्ट करने वाली एप्लेट पुल) है कि एक और शीघ्र कारण हो सकता है का परिचय (16 अक्टूबर 2013 releated) । 7u45 परिवर्तन के बारे में यह लेख वार्ता: https://blogs.oracle.com/java-platform-group/entry/liveconnect_changes_in_7u45

मूल रूप से आप भी संकेतों से बचने के लिए अपने मैनिफ़ेस्ट फ़ाइल के लिए निम्न में जोड़ना चाहेंगे:

Caller-Allowable-Codebase: test.example.com www.example.com 

आप एक उत्पाद है कि एक एप्लेट शामिल बेच रहे हैं और आप नहीं जानते कि आप पर कौन से डोमेन तैनात किए जा सकते हैं * यहां पॉप्युलेट कर सकते हैं।

+0

यदि आप पैक किए गए सॉफ़्टवेयर को बेच रहे थे जिसमें एक हस्ताक्षरित जावा ऐपलेट शामिल था, तो क्या इसका मतलब यह है कि अब आपको कॉलर-स्वीकार्य-कोडबेस सेगमेंट में आपके प्रत्येक एप्लेट को चलाने वाले प्रत्येक डोमेन को शामिल करने की आवश्यकता होगी? एक पैकेज किए गए सॉफ़्टवेयर वातावरण में, आप उस डोमेन को भी नहीं जानते हैं कि आपका ग्राहक आपके एप्लेट को चालू करने जा रहा है? – muzzamo

+0

हां, मुझे लगता है कि आपको एप्लेट में कॉलर-स्वीकार्य-कोडबेस होना होगा और इसमें उन डोमेन होना चाहिए। वह पागल है। कुछ चीजें जो मैं काम करने के बारे में सोच सकता हूं- इसके आसपास: जावा एप्लेट के अंदर आप जावास्क्रिप्ट निष्पादित कर सकते हैं और मैंने इसके साथ प्रतिबंध नहीं देखा है। आप शायद अपना कोड फिर से काम कर सकते हैं ताकि जेएस-जावा इंटरैक्शन ऐप्पल के भीतर से शुरू किए जा सकें। दूसरा विकल्प इंस्टॉलेशन प्रक्रिया के हिस्से के रूप में सही डोमेन के साथ एप्लेट जेएआर के निर्माण को स्वचालित करना है। –

+0

@muzzamo मैंने अभी कॉलर-स्वीकार्य-कोडेबेस में * कोशिश की और यह काम किया। –

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