Skip to main content

Manifest Mf Codebase Forex


Arbeiten mit manifesten Dateien: Die Grundlagen JAR-Dateien unterstützen eine breite Palette von Funktionalität, einschließlich der elektronischen Signierung, Versionskontrolle, Paketversiegelung und andere. Was gibt eine JAR-Datei diese Vielseitigkeit Die Antwort ist die JAR-Datei39s Manifest. Das Manifest ist eine spezielle Datei, die Informationen über die in einer JAR-Datei verpackten Dateien enthalten kann. Durch die Anpassung dieser quotmetaquot-Informationen, die das Manifest enthält, aktivieren Sie die JAR-Datei für eine Vielzahl von Zwecken. Diese Lektion erklärt den Inhalt der Manifest-Datei und zeigt Ihnen, wie Sie damit arbeiten können, mit Beispielen für die grundlegenden Funktionen: Beim Erstellen einer JAR-Datei wird automatisch ein Standardmanifest erstellt. In diesem Abschnitt wird das Standardmanifest beschrieben. Dieser Abschnitt zeigt Ihnen die grundlegende Methode zum Ändern einer Manifestdatei. Die späteren Abschnitte zeigen spezifische Änderungen, die Sie machen möchten. In diesem Abschnitt wird beschrieben, wie Sie den Header der Hauptklasse in der Manifestdatei verwenden, um einen Einstiegspunkt für die Anwendung39 festzulegen. In diesem Abschnitt wird beschrieben, wie Sie den Klassenpfad-Header in der Manifest-Datei verwenden, um Klassen in anderen JAR-Dateien dem Klassenpfad hinzuzufügen, wenn Sie ein Applet oder eine Anwendung ausführen. In diesem Abschnitt wird die Verwendung der Paketversions-Header in der Manifestdatei beschrieben. In diesem Abschnitt wird beschrieben, wie Sie Pakete in einer JAR-Datei durch Ändern der Manifestdatei versiegeln. Dieser Abschnitt beschreibt die Verwendung von Manifest-Attributen, um die Sicherheit eines Applets oder einer Java Web Start-Anwendung zu erhöhen. Zusätzliche Informationen Eine Spezifikation des Manifest-Formats ist Teil der Online-JDK-Dokumentation. Ihre Verwendung dieser Seite und das gesamte Material auf den Seiten unter quotThe Java Tutorialsquot Banner unterliegt diesen gesetzlichen Bestimmungen. Copyright-Kopie 1995, 2015 Oracle und seine Tochtergesellschaften. Alle Rechte vorbehalten. Beschwerden Komplimente Vorschläge Geben Sie uns Ihre feedback. JAR Datei Manifest Attribute für Sicherheit Das JAR Dateimanifest enthält Informationen über den Inhalt der JAR-Datei, einschließlich Sicherheits-und Konfigurationsinformationen. Verwenden Sie die in diesem Abschnitt beschriebenen Manifest-Attribute, um die Sicherheit der Ausführung von RIAs aus einem Browser zu erhöhen. Fügen Sie dem Manifest die Attribute hinzu, bevor die JAR-Datei signiert ist. Weitere Informationen zum Hinzufügen von Attributen zur JAR-Manifestdatei finden Sie unter Ändern einer Manifestdatei im Java-Tutorial. Hinweis: Diese Attribute gelten für signierte Applets und Java Web Start-Anwendungen. Diese Attribute werden für eigenständige Java-Anwendungen ignoriert. Berechtigungen Attribut Das Attribut Berechtigungen wird verwendet, um zu überprüfen, dass die Berechtigungsstufe, die von der RIA angefordert wird, wenn sie ausgeführt wird, mit der Berechtigungsstufe übereinstimmt, die beim Erstellen der JAR-Datei festgelegt wurde. Verwenden Sie dieses Attribut, um zu verhindern, dass eine Person eine Anwendung erneut signiert, die mit Ihrem Zertifikat signiert ist und sie auf einer anderen Berechtigungsebene ausgeführt wird. Setzen Sie dieses Attribut auf einen der folgenden Werte: sandbox - Gibt an, dass die RIA im Sicherheits-Sandbox ausgeführt wird und keine zusätzlichen Berechtigungen erfordert. All-permissions - Gibt an, dass das RIA Zugriff auf die Systemressourcen des Benutzers erfordert. Bei Java Web Start-Anwendungen und Applets, die JNLP verwenden, muss der Wert des Berechtigungsattributs mit der Berechtigungsstufe übereinstimmen, die in der JNLP-Datei angefordert wird, oder die Standardberechtigung, wenn keine Berechtigungsstufe angefordert wird. Andernfalls wird ein Fehler angezeigt und der RIA gesperrt. Siehe Struktur der JNLP-Datei für Informationen über das Sicherheitselement, mit dem die Berechtigungsstufe angefordert wird. Wenn das Element nicht vorhanden ist, wird die Berechtigungsstufe standardmäßig auf Sandbox gesetzt. Für Applets, die JNLP nicht verwenden, muss der Wert des Berechtigungsattributs mit der Berechtigungsstufe übereinstimmen, die im Applet-Tag angefordert wird. Andernfalls wird ein Fehler angezeigt und der RIA gesperrt. Wenn das Applet-Tag keine Berechtigungsebene enthält, werden die signierten Applets mit der Berechtigungsstufe ausgeführt, die vom Berechtigungsattribut festgelegt wird. Informationen zum Festlegen der Berechtigungsstufe im Applet-Tag finden Sie unter Bereitstellen mit dem Applet-Tag. Wenn der Schieberegler "Sicherheitsstufe" in der Java-Systemsteuerung auf "Sehr hoch" oder "hoch" gesetzt ist. Wird das Attribut Berechtigungen in der Haupt-JAR-Datei für das RIA benötigt. Wenn das Attribut nicht vorhanden ist, wird das RIA gesperrt. Für die Sicherheitsstufe Mittel, wenn das Berechtigungsattribut nicht vorhanden ist, enthält die Sicherheitsabfrage eine gelbe Warnung über das fehlende Attribut, und die vom RIA angeforderte Berechtigungsstufe wird verwendet. Codebase-Attribut Das Codebase-Attribut wird verwendet, um die Codebasis der JAR-Datei auf bestimmte Domänen zu beschränken. Verwenden Sie dieses Attribut, um zu verhindern, dass jemand Ihre Anwendung auf einer anderen Website für böswillige Zwecke erneut implementiert. Hinweis: Wenn das Codebase-Attribut keinen sicheren Server angibt, z. B. HTTPS. Besteht ein gewisses Risiko, dass Ihr Code in Man-in-the-Middle (MITM) Angriffsschemata umgewandelt werden könnte. Legen Sie dieses Attribut entweder für den Domänennamen oder die IP-Adresse fest, in der sich die JAR-Datei für die Anwendung befindet. Das Protokoll und die Portnummer können ebenfalls enthalten sein. Trennen Sie für mehrere Standorte die Werte durch ein Leerzeichen. Ein Asterisk () kann als Platzhalter nur am Anfang des Domänennamens verwendet werden und kann nicht mit nur einer Top-Level-Domain verwendet werden. Die folgende Tabelle zeigt Beispielwerte und deren Übereinstimmung. Der Wert des Codebase-Attributs muss mit dem Speicherort der JAR-Datei für das RIA übereinstimmen. Andernfalls wird ein Fehler angezeigt und der RIA gesperrt. Wenn das Attribut nicht vorhanden ist, wird eine Warnung an die Java-Konsole geschrieben und die für das Applet-Tag oder die JNLP-Datei angegebene Codebasis verwendet. Application-Name-Attribut Das Application-Name-Attribut wird in Sicherheitsaufforderungen verwendet, um einen Titel für Ihre signierte RIA bereitzustellen. Die Verwendung dieses Attributs wird empfohlen, um Benutzern zu helfen, die Entscheidung zu treffen, das RIA zu vertrauen und auszuführen. Der Wert kann ein beliebiger gültiger String sein, zum Beispiel: Wenn das Application-Name-Attribut im JAR-Dateimanifest nicht vorhanden ist, wird eine Warnung an die Java Console geschrieben und der Wert für das Attribut Main-Class wird verwendet. Wenn im Manifest kein Attribut vorhanden ist, wird in den Sicherheitsaufforderungen kein Titel angezeigt. Titel werden nicht für nicht signierte RIAs angezeigt. Application-Library-Allowable-Codebase-Attribut Das Attribut Application-Library-Allowable-Codebase identifiziert die Orte, an denen Ihr signiertes RIA erwartet wird. Dieses Attribut wird verwendet, um festzustellen, was im Feld Speicherort für die Sicherheitsabfrage angegeben ist, die Benutzern angezeigt wird, wenn sich die JAR-Datei für Ihr RIA an einem anderen Speicherort befindet als die JNLP-Datei oder HTML-Seite, die Ihr RIA startet. Wenn sich die Dateien nicht an den identifizierten Orten befinden, wird das RIA gesperrt. Setzen Sie dieses Attribut auf die Domänen, in denen sich die JAR-Datei, die JNLP-Datei und die HTML-Seite befinden. Um mehrere Domänen anzugeben, trennen Sie die Domänen durch ein Leerzeichen, zB: Wenn das Attribut Application-Library-Allowable-Codebase vorhanden ist und dem Ort entspricht, aus dem das RIA gestartet wird, wird im Feld Location ein einzelner Host aufgelistet Für die Eingabeaufforderung und die Option zum Verbergen zukünftiger Eingabeaufforderungen bereitgestellt wird. Wenn dieses Attribut vorhanden ist und auf die Dateien von einem Speicherort zugegriffen werden, der nicht für das Attribut enthalten ist, wird das RIA blockiert. Wenn dieses Attribut nicht vorhanden ist, werden mehrere Hosts, die den Standorten der JAR-Datei und der JNLP-Datei oder der HTML-Seite entsprechen, im Feld "Standort" für die Eingabeaufforderung aufgelistet. Wenn mehrere Hosts angezeigt werden, erhält der Benutzer keine Möglichkeit, zukünftige Eingabeaufforderungen zu verbergen. Die Verwendung dieses Attributs wird empfohlen, so dass die Dateien für die RIA nur von bekannten Orten abgerufen werden. Dieses Attribut wird nicht benötigt, wenn sich die JAR-Datei für das RIA am selben Speicherort befindet wie die JNLP-Datei oder HTML-Seite, die das RIA startet. Eine Beschreibung der zulässigen Werte finden Sie unter Codebase-Attribut. Caller-Allowable-Codebase-Attribut Das Caller-Allowable-Codebase-Attribut wird verwendet, um die Domänen zu identifizieren, aus denen JavaScript-Code Anrufe zu Ihrem RIA ohne Sicherheitsaufforderungen machen kann. Setzen Sie dieses Attribut auf die Domäne, die den JavaScript-Code hostet. Wenn ein Anruf von einem JavaScript-Code ausgeführt wird, der sich nicht in einer vom Attribut Caller-Allowable-Codebase angegebenen Domain befindet, wird der Anruf gesperrt. Um mehrere Domänen anzugeben, trennen Sie die Domänen durch ein Leerzeichen, zum Beispiel: Wenn das Attribut Caller-Allowable-Codebase nicht vorhanden ist, zeigen Anrufe vom JavaScript-Code zu Ihrem RIA eine Sicherheitswarnung an und Benutzer haben die Wahl, den Anruf zuzulassen Oder den Anruf sperren. Für unsignierte RIAs muss der JavaScript-Code, der Zugriff auf das RIA erfordert, am selben Ort wie die JAR-Hauptdatei für Ihr RIA sein, andernfalls wird der Benutzer aufgefordert, Zugriff zu gewähren. Sicherheitsaufforderungen werden für jede Applet classLoader-Instanz angezeigt. Eine Beschreibung der zulässigen Werte finden Sie unter Codebase-Attribut. Wenn als Wert für das Attribut Caller-Allowable-Codebase ein eigenständiger Asterisk () angegeben wird, dann rufen Anrufe von JavaScript-Code zu Ihrem RIA eine Sicherheits-Warnung und Benutzer haben die Wahl, den Anruf zu erlauben oder den Anruf zu sperren. Eine Option zur Erinnerung an die Wahl ist ebenfalls vorhanden, und wenn diese Option ausgewählt ist, wird die Warnung nicht mehr angezeigt, wenn das RIA gestartet wird. Entry-Point-Attribut Das Entry-Point-Attribut wird verwendet, um die Klassen zu identifizieren, die als Einstiegspunkte zu Ihrem RIA verwendet werden dürfen. Die Identifizierung der Einstiegspunkte hilft dabei, zu verhindern, dass unberechtigter Code ausgeführt wird, wenn eine JAR-Datei mehr als eine Klasse mit einer main () - Methode, mehreren Applet-Klassen oder mehreren JavaFX-Anwendungsklassen enthält. Setzen Sie dieses Attribut auf den vollständig qualifizierten Klassennamen, der als Einstiegspunkt für das RIA verwendet werden kann. Um mehr als eine Klasse anzugeben, trennen Sie die Klassen durch ein Leerzeichen, zum Beispiel: Entry-Point: apps. test. TestUI apps. test. TestCLI Wenn das JAR-Manifest signiert ist und der Eintrag der Hauptklasse oder der Applet-Klasse angegeben ist Unterscheidet sich die JNLP-Datei oder der Anwendungsdeskriptor von der für das Entry-Point-Attribut angegebenen Klasse, dann wird die RIA blockiert. Wenn das Entry-Point-Attribut nicht vorhanden ist, kann jede Klasse mit einer main () - Methode oder einer Applet - oder JavaFX-Anwendungsklasse in der JAR-Datei zum Starten des RIA verwendet werden. Das Trusted-Only-Attribut wird verwendet, um zu verhindern, dass nicht vertrauenswürdige Klassen oder Ressourcen für ein Applet oder eine Anwendung geladen werden. Setzen Sie den Wert des Attributs auf true. Zum Beispiel: Dieses Attribut verhindert, dass eine privilegierte Anwendung oder ein Applet mit nicht vertrauenswürdigen Komponenten umprogrammiert wird. Alle Klassen und Ressourcen in der Anwendung oder im Applet müssen signiert sein und alle Berechtigungen anfordern. Das Trusted-Library-Attribut wird für Anwendungen und Applets verwendet, die nicht vertrauenswürdige Komponenten zulassen. Es wird kein Warndialog angezeigt und eine Anwendung oder ein Applet können JAR-Dateien laden, die nicht vertrauenswürdige Klassen oder Ressourcen enthalten. Setzen Sie den Wert des Attributs auf true. Zum Beispiel: Dieses Attribut verhindert, dass Komponenten in einer privilegierten Anwendung oder einem Applet mit nicht vertrauenswürdigen Komponenten umbenannt werden. Alle Klassen und Ressourcen in einer JAR-Datei, die dieses Manifest-Attribut enthält, müssen signiert sein und alle Berechtigungen anfordern. In einer gemischten Codeanwendung oder einem Applet müssen alle privilegierten Klassen und Ressourcen in JAR-Dateien enthalten sein, die das Attribut Trusted-Library enthalten. Dieses Attribut wird für Anrufe zwischen privilegiertem Java-Code-Sandbox-Java-Code verwendet. Wenn Sie über JavaScript-Code verfügen, der Java-Code aufruft, finden Sie weitere Informationen unter Caller-Allowable-Codebase-Attribut. Alle vertrauenswürdigen Bibliotheks-JARs werden in einen separaten dedizierten Klassenlader geladen, der für die Anwendung oder die Applet-Instanz eindeutig ist. Dieser Trusted-Library-Loader ist nun der übergeordnete Knoten des normalen Webstart - oder Applet-Klassenladers. Für die Abwärtskompatibilität mit dem ursprünglichen Suchauftrag arbeiten beide Lader zusammen, um einen gemeinsamen Klassenpfad zu implementieren. Im Einklang mit früheren Versionen, JAR-Dateien verwenden faulen Download und werden geöffnet, wie erforderlich, um die gewünschten Klassen und Ressourcen zu finden. Code in einer JAR-Datei, die mit dem Manifest-Attribut der Trusted-Library markiert werden soll, muss möglicherweise etwas modifiziert werden, wenn es Aufrufe verwendet, die vom Klasse-Loader abhängig sind, z. B. die einzelne Parameterversion von Class. forName (). Class. getResource (). Und Class. getResourceAsStream (). Einige Varianten von java. util. ResourceBundle. getBundle (). Und alle anderen Methoden, die im Vergleich zu ihren unmittelbaren Anrufer definieren Loader. Änderungen müssen nur vorgenommen werden, wenn die angeforderte Klasse oder Ressource in einer JAR-Datei gefunden wurde, die keine Trusted-Library ist (und daher vom normalen Webstart - oder Applet-Klassenlader geladen wird). Code in einer Trusted-Library kann durch Aufruf von Thread. currentThread () getContextClassLoader () den normalen Loader nachschlagen. Beachten Sie jedoch, dass es ungewöhnliche Umstände gibt, in denen getContextClassLoader () null zurückgeben kann. Dies kann beispielsweise der Fall sein, wenn der Garbage Collector einen JRE-Systemthread verwendet, um die Methode Object. finalize () einer nicht erreichbaren Instanz aufzurufen. Wenn Sie die Klasse Class. getResource () oder Class. getResourceAsStream () in ihre ClassLoader-Entsprechungen konvertieren müssen, müssen Sie den String-Parameter wie in der Dokumentation dieser beiden Methoden beschrieben anpassen. Wenn der ursprüngliche Ressourcenname mit begann. Dann war es ein absoluter Name und die Führung muss einfach entfernt werden. Andernfalls bestimmen Sie, ob die Klasseninstanz, die das Ziel des getResource-Aufrufs war, in einem benannten Paket ist. Wenn es ein Array ist, sollten Sie zuerst den zugrundeliegenden Komponententyp des Arrays bestimmen. Rufen Sie Class. getName () für die Klasse oder die Komponententypinstanz auf. Wenn der Klassenname einen enthält. Zeichen, ist es in einem benannten Paket, das dem ursprünglichen Ressourcennamen vorangestellt werden muss. Bestimmen Sie den Namen des Pakets, indem Sie alle Zeichen nach und einschließlich der Schleife entfernen. Charakter. Als nächstes ersetzen Sie alle verbleibenden. Zeichen mit Zeichen. Schließlich fügen Sie eine Schleife hinzu und fügen Sie die ursprüngliche Ressource-Name-Zeichenfolge. Dieser neue String kann nun an die ClassLoader-Version der Methoden getResource () oder getResourceAsStream () übergeben werden. Im Allgemeinen muss darauf geachtet werden, dass der Code in der vertrauenswürdigen Bibliothek sorgfältig und sicher geschrieben wird und ansonsten kompatibel ist, in einer separaten Klasse-Loader-Instanz von allen verbleibenden Gläsern geladen zu werden, die Teil der Anwendung sind und von dem geladen werden Der normale Lader. Weitere Informationen Weitere Informationen zum Verwenden von Manifest-Attributen zum Verwalten von Anrufen aus nicht vertrauenswürdigem Code finden Sie unter Mixing Privileged Code und Sandbox Code. Weitere Informationen finden Sie unter Verhindern, dass RIAs für die Verwendung von Manifest-Attributen für die Wiederherstellung verwendet werden, um sicherzustellen, dass die richtige Berechtigungsstufe und Codebasis verwendet werden. Informationen zum Hinzufügen von Attributen zur JAR-Manifestdatei finden Sie unter Ändern einer Manifestdatei im Java-Tutorial.

Comments