Hur Applet Nätverk Säkerheten Fungerar

Link: https://www.innovation.ch/java/HTTPClient/security.html

Tid

Denna sida finns även på den spanska; översättning utfördes av courtesy av Maria Ramos från Webhostinghub.com.

Hur Applet Nätverk Säkerhetspolitik verk

Eftersom detta är en källa till oändlig förvirring, här är en översikt av hur saker och ting fungerar när man använder java.net.Uttag eller java.net.URLConnection (observera att java.applet.AppletContext.showDocument() är inte föremål för några begränsningar av säkerhetsskäl och därmed diskussionen här gäller inte det). Vad som följer är sant för Netscape version 2.01 eller senare och JDK 1.0.2 eller senare.

Status Quo

Program

Program kan ansluta var som helst de vill, såvida du installera din egen säkerhet chef som begränsar anslutningar. Därför för resten av artikeln vi kommer bara att tala om applets körs i en webbläsare eller via Appletviewer.

Applets

Applets är uppdelad i två kategorier: betrodda och untrused. Betrodd applets är inte föremål för några begränsningar av säkerhetsskäl och kan därför öppna anslutningar till något värd om du vill; opålitliga applets är föremål för säkerheten begränsningar som beskrivs nedan.

När en applet laddas kontrollerar först för att se om en applet genom att namn (värdet av KODEN attribut i APPLET-taggen) finns i classpath (om inget uttryckligen anges, då bara den inre standard classpath används); om så är fallet, den applet som finns i classpath är laddad. Applets fyllts på detta sätt anses vara betrodda. Om inte applet av den anmodade namn i classpath då det laddas från den plats som anges av den kombination av adresser som används för att ladda sidan innehåller applet och i KODBASEN för attribut. Applets fyllts på detta sätt betraktas som opålitliga.

Eftersom tillförlitliga appletar har ingen säkerhet restriktioner på dem att de också kommer att ignoreras för resten av det här dokumentet. Från och med nu alla applets som antas vara opålitliga. Dessutom, eftersom där en applet laddas från spelar en central roll i att bestämma vilken värd(s) att det kan ansluta till den mottagande som serveras appleten kommer att refereras till i det följande som med ursprung värd.

Här nu är säkerhets restriktioner på opålitliga applets.

Appletviewer (JDK)

Standard säkerhet läge är att bara tillåta anslutningar till den ursprungliga värden. Detta beteende kan ändras dock genom att antingen använda Applet->Egenskaper-Menyn eller genom att ställa in egenskapenappletviewer.säkerhet.mode=xxx i ~/.hotjava/egenskaper direkt, där xxx en fritt för obegränsad tillgång värden för standard beteende, eller ingen att dissallow alla nätverksanslutningar. Observera: ovanstående menyalternativ faktiskt sätter detta hotellet för dig.

Netscape

Säkerheten begränsningar här är liknande dem som gäller för standardläget i Appletviewer. Undantag är att för java.net.URLConnection protokollet måste också matcha; så exempelvis om du tar in en applet viahttps protokollet från en säker server, då kan du bara använda https: webbadresser för URLConnection. Även en ytterligare sak att notera är att när en applet laddas via fil protocol (eller via “Open File…” i menyn) netscape verkar glömma detta, och kommer att kasta en säkerhet undantag säkerhet.protokoll: “även om du försöker öppna en fil: url.

Det är ingen som stöds sätt för att ändra network security policy, för att på ett fritt sätt kolla in Hur man kringgår Netscape SecurityManager, men du ska veta att jag tar inget ansvar för eventuella konsekvenser som uppstår från att följa instruktionerna där.

HotJava

Jag har inte lekt med HotJava så jag är osäker på det exakta genomförandet av det. Men jag tror att det har samma eller liknande egenskaper och beteenden så som Appletviewer. Om du har några detaljer, eller kan bekräfta eller kullkasta mitt uttalande, var god kontakta mig.

Microsoft Internet Explorer

Återigen, jag har inte spelat med MSIE (som jag arbetar bara på U*IX-maskiner) så jag är inte säker på detaljer, men jag skulle gissa att det beteende som är liknande till det av Netscape. Om du har några ytterligare info vänligen kontakta mig.

en Del Konsekvenser av den “kan ansluta till sitt ursprung värd bara” Politik

Följder för Proxy

Om du är bakom en brandvägg och använda en proxyserver för att få ut så är du i princip förhindrade att använda java.net.Uttag för anslutningar. Problemet är detta: stöd för proxyservrar är en del av protokollet som du använder över TCP/IP (till exempel HTTP, FTP, Gopher, etc.). det är därför inte möjligt att kapsla in proxy specifika saker på socket layer (i motsats till t ex strumpor). Så om du nu öppna en anslutning med hjälp av java.net.Uttaget, som du kommer att tänka på den värddator som du är tillåten att ansluta till? Om du tar proxy-server så att du kan ansluta till någon maskin som du vill (via proxy server) och därigenom kringgår hela säkerhetspolitik. Om du säger nej, jag vill tänka på den sanna ursprung värd (den som proxy-server så småningom ansluten till) då du är i praktiken förbjudna från att göra någon nätverksanslutning alls, eftersom att ansluta till proxyservern skulle vara att ansluta till en annan värd än en applet laddas ur. Den senare inriktningen är vad som Netscape och Appletviewer ta och göra det omöjligt för människor bakom brandväggar för att köra appletar som försöker ansluta till värdar utanför brandväggen, via java.net.Uttaget. Det är också värt att nämna att de flesta brandväggar inte tillåta TCP-anslutningar, som är den enda vägen ut är via proxy-servrar (oftast för http och ftp, och möjligen Gopher). Så även om security manager tillåtna anslutningar till brandväggen chansen att du inte skulle komma ut.

Saker och ting lite bättre om du använder java.net.URLConnection klass. Här genomförande kan (och gör) sköld det faktum att en proxyserver används, kontrollera den verkliga destination begäran mot applets ursprung, och att låta sådana anslutningar via proxy (plus att du vet att http-anslutningar är tillåtna genom brandväggen, eftersom det är på det sättet applet fick fyllts på i första hand). För närvarande därför, om du använder Netscape eller Appletviewer, med hjälp av URLConnection kommer att fungera även om du är bakom en brandvägg och använda en http-proxy för att komma ut.

Som en parentes, en del (många?) brandväggar inte tillhandahålla DNS-värdnamnet upplösning för namnen på värdar utanför brandväggen, vilket innebär att försöka att ansluta till “host.name.org” från insidan av brandväggen kommer att misslyckas (du får en säkerhet undantag som

"Säkerhet Undantag: uttag.ansluta:xxx.yyy.zzz->xxx.yyy.zzz"

– observera att samma mängd namn på varje sida av pilen). Vad är happending är att Netscape applet security manager försöker översätta värdnamn till IP-adresser och jämför sedan dessa IP-adresser (detta är för att förhindra DNS-spoofing). Men eftersom namnen inte kan omsättas på grund av brandväggen konfigurera ett UnknownHost undantag kastas, vilket i sin tur förvandlas till ovanstående säkerhet undantag. Lösningen är att ladda sidan som innehåller den applet som använder en IP-adress i stället för ett värdnamn i fältet url (t ex “http://123.42.18.19/java/CoolApp.html”) – getCodeBase().getHost() och den interna servern namn kommer sedan att både avkastning IP-adress (dvs “123.42.18.19”), som i sin tur är “översatta” till samma IP-adress. Den enda nackdelen är att det inte fungerar på MSIE (det verkar som kräver att du använder det värdnamn och kommer puke med ‘"ClassFile" hittades inte‘ om du använder IP-adresser). Alternativt, med Netscape 4.0 eller senare kan du ställa en säkerhet preferens som talar om för Netscape att inte försöka slå IP-adress, men istället för att lita på proxy; se trustProxy företräde.

Obs: om du vill Att fullmaktsinnehavaren under JDK 1.0.2 du behöver för att ställa fastigheten proxySet true, ställ in proxyHost egenskapen att peka till proxyservern och anger proxyPort egendom till rätt port. I Appletviewer dessa kan också ställas in med Applet -> menyn Egenskaper. För JDK 1.1 måste du ange http.proxyHost för att rätt värd och http.proxyPort för att rätt port, fastställande http.proxyHost nullinaktiverar proxy.

Följder för STRUMPOR

För närvarande är under Netscape situationen är den samma här som för proxyservrar. Men med det sätt som STRUMPOR fungerar är det möjligt att sätta STRUMPOR stöd i java.net.Socket-kod (ja, faktiskt SocketImpl kod), vilket resulterar i en inkapsling av SOCKS-protokollet skikt och så att verkställandet av säkerhetspolitiken utan onödigt negativ inverkan på människor bakom brandväggar. Detta har gjorts för JDK 1.0.2, men tyvärr inte i Netscape (dock semi-officiellt uttalande från dem, är att detta anses vara en bugg, och vi kan därför förvänta oss att detta ska vara fast någon gång – bara fråga inte när!). Så om du har en SOCKS-servern då allt är bra så länge som du använder Appletviewer eller java.net.URLConnection, men med hjälp av java.net.Uttaget i Netscape kommer att ge dig en Säkerhetsundantag.

Om du arbetar på OS/2 (minst Warp 4) så är det värt att notera att på detta system grundläggande TCP/IP-stacken som redan innehåller stöd för SOCKS. Därför att detta system kan du använda java.net.Uttaget i Netscape även om du är bakom en SOCKS-proxy (tack till Mark James för info).

Även på frågan, STRUMPOR stöd i JDK är aktiverat genom att ställa in socksProxyHost egenskapen att peka på den socks-servern, om den som SOCKS-servern lyssnar inte på standard strumpor port (1080) då måste du också ange socksProxyPort egendom till rätt port. I Appletviewer dessa kan också ställas in med Applet -> menyn Egenskaper.

HTTPClient

Eftersom HTTPClient använder java.net.Uttag för anslutning, säkerhet begränsningar och inställningar när du använder HTTPClient är samma som beskrivits ovan för java.net.Uttaget.

Sammanfattning

Denna tabell sammanfattar där det är tillåtet att ansluta till när du använder java.net.Uttag:

Appletviewer Netscape
Ingen Proxy , Beroende på inställningen av appletviewer.säkerhet.läge egendom, kan du ansluta ingenstans, bara för att den har sitt ursprung värd, eller var som helst. Kan bara ansluta till den ursprungliga värden.
SOCKS-Proxy Samma som ingen proxy, förutsatt att du ställer socksProxyHost egendom. Nej anslutningar tillåtna
(förutom under OS/2, där det är samma som med ingen proxy).
HTTP Proxy om appletviewer.säkerhet.läge egenskapen är inställd på ingen sedan alla anslutningar är tillåtna, annars inga anslutningar är tillåtna. Nej anslutningar accepteras.

Denna tabell sammanfattar där det är tillåtet att ansluta till när du använder java.net.URLConnection:

Appletviewer Netscape
Ingen Proxy , Beroende på inställningen av appletviewer.säkerhet.läge egendom, kan du ansluta ingenstans, bara för att den har sitt ursprung värd, eller var som helst. Kan bara ansluta till den ursprungliga värden.
SOCKS-Proxy Samma som ingen proxy, förutsatt att du ställer socksProxyHost egendom. Samma som ingen proxy, förutsatt att Netscape har varit rätt konfigurerad för att använda proxy (Alternativ -> Inställningar för Nätverk… -> Proxy).
HTTP Proxy Samma som ingen proxy, förutsatt att du ställer lämpliga egenskaper (se Fullmakter). Samma som SOCKS-Proxy.

Leave a Reply