Script: http://www.innovation.ch/java/HTTPClient/security.html
Mivel ez a forrása a végtelen zavar, itt egy áttekintést arról, hogy működnek a dolgok, amikor a java.net.Socket vagy java.net.URLConnection (megjegyzendő, hogy java.applet.AppletContext.showDocument () nem vonatkozik a biztonsági korlátozások és így a vita itt nem vonatkozik rá). Ami ezután következik, igaz Netscape 2.01 vagy újabb és JDK 1.0.2 vagy újabb.
Status Quo
Alkalmazások
Alkalmazások kapcsolódni bárhol akarnak, ha nincs telepítve a saját biztonsági vezetője, amely korlátozza kapcsolatokat. Ezért a többi cikket csak akkor tudunk beszélni applet fut egy böngésző vagy azon keresztül appletviewer.
Applet
Kisalkalmazások két kategóriába sorolhatók: megbízható és untrused. Megbízható appletek nem vonatkozik semmilyen biztonsági korlátozások, és ezért nyitott kapcsolatokat minden olyan fogadó akarata; megbízhatatlan applet vonatkoznak a biztonsági korlátozások az alábbiakban ismertetjük.
Amikor egy kisalkalmazás betöltése ellenőrzést először, hogy ha egy applet ezt a nevet (az érték a CODE attribútum a applet tag) van az osztályútvonal (ha nincs kifejezetten beállítva, akkor csak a belső alapértelmezett osztályútvonal használnak) ; ha igen, akkor az applet megtalálható a osztályútvonal van betöltve. Applet betöltött így tartják megbízható. Ha nem applet által kért név van a osztályútvonal akkor kerül betöltésre által megadott helyen kombinációja urls használt betölteni az oldalt tartalmazó applet és a CODEBASE attribútumot. Applet betöltött így megbízhatónak minősülnek.
Mivel megbízható applet nincs biztonsági korlátozások miatt nekik szintén figyelmen kívül hagyja a többi ezt a dokumentumot. Mostantól minden applet a feltételezések szerint nem megbízható. Továbbá, mivel ha egy applet volt betöltve központi szerepet játszik abban, hogy melyik host (ok) is csatlakozhat, a fogadó, amely arra szolgált az applet lesz a továbbiakban a következő, mint amilyet az host.
Itt most a biztonsági korlátozások miatt nem megbízható kisalkalmazások.
Appletviewer (JDK)
Az alapértelmezett biztonsági mód csak hogy kapcsolatokat az eredeti host. Ez a viselkedés módosítható azonban segítségével akár a Applet-> Tulajdonságok menü beállításával vagy az ingatlan appletviewer.security.mode = xxx a ~ / .hotjava / tulajdonságok közvetlenül, ahol xxx a korlátlan korlátlan hozzáférést, host az alapértelmezett viselkedés vagy sem, hogy dissallow összes hálózati kapcsolatot. Megjegyzés: a fenti menüpont tulajdonképpen meghatározza az ingatlan az Ön számára.
Netscape
A biztonsági korlátozásokat itt hasonlóak az alapértelmezett mód appletviewer. A kivétel az, hogy java.net.URLConnection a protokoll is meg kell egyeznie; így például ha betölti egy applet keresztül https protokoll egy biztonságos szerver, akkor csak a https: URL-eket a URLConnection. Szintén egy további figyelemre méltó dolog az, amikor egy applet vittük keresztül fájlprotokollját (vagy a ‘Fájl megnyitása … “menü) netscape látszik elfelejti ezt, és dobjon egy biztonsági kivétel” security.protocol “akkor is, ha megpróbál megnyitni egy fájlt: url.
Nincs támogatott módon változik a hálózati biztonsági politika; Egy nem támogatott módon ellenőrizze hogy hogyan lehet áthidalni a Netscape SecurityManager, de figyelmeztetett, hogy veszek semmilyen felelősséget nem vállal az esetleges következményeiért utasításait követve ott.
HotJava
Még nem játszottam körül HotJava úgyhogy biztos a pontos végrehajtás van. Azonban úgy gondolom, hogy ugyanaz, vagy hasonló tulajdonságokkal és magatartást, mint a Appletviewer. Ha bármilyen további részletek, vagy megerősítheti vagy érvényteleníti az állításomat, vegye fel a kapcsolatot velem.
Microsoft Internet Explorer
Ismét én még nem játszottam az MSIE (mivel csak dolgozni U * IX gépek), így nem vagyok biztos a részleteket, de Gondolom a viselkedés hasonló a Netscape. Ha bármilyen további információért kérjük keressen meg.
Néhány vonatkozásai “tud csatlakozni származó host csak a” politika
Következmények Proxy-k
Ha tűzfal mögött van, és használja a proxy szervert, hogy ki, akkor alapvetően ne használjanak java.net.Socket kapcsolatokat. A probléma a következő: támogatja a proxy része a protokoll, amit használ TCP / IP feletti (például HTTP, FTP, Gopher, stb.); ez így nem lehetséges, hogy magukba a proxy konkrét dolgokat a socket réteg (ellentétben például socks). Tehát, ha most, amely a kapcsolat java.net.Socket, akik mész, hogy tekintsék a fogadó te szabad csatlakozni? Ha megteszi a proxy szerver, amely lehetővé teszi majd, hogy csatlakozni bármely gépen szeretné (proxy kiszolgálón keresztül) megkerülve ezzel az egész biztonsági politika. Ha azt mondod, nem, azt szeretné, hogy az igazi eredeti host (az egyik, hogy a proxy szerver végül csatlakozik), akkor te gyakorlatilag tilos bármiféle hálózati kapcsolat egyáltalán, hiszen a proxihoz lenne csatlakozni egy másik host mint az az applet volt betöltve. Az utóbbi irányvonal, amit a Netscape és az appletviewer veszi, lehetetlenné téve az emberek tűzfal mögött fut applet, amely megpróbál csatlakozni házigazdák a tűzfalon kívüli keresztül java.net.Socket. Szintén érdemes megemlíteni, hogy a legtöbb tűzfal nem teszik lehetővé a TCP kapcsolatok ki, hogy az egyetlen kiút van keresztül proxy szerverek (általában http és ftp, és esetleg Gopher). Tehát akkor is, ha a biztonsági menedzser megengedett kapcsolatok a tűzfal esély van arra, nem tud kijutni.
A dolgok kicsit jobb, ha használja a java.net.URLConnection osztályban. Itt a megvalósítás (és nem) pajzs az a tény, hogy a proxy használ, ellenőrizze a valódi cél a kérelem elleni kisalkalmazások eredetét, és lehetővé teszi az ilyen kapcsolatok révén a proxy (plusz tudja, hogy http kapcsolat engedélyezett a tűzfalon keresztül, mivel ez a módja az applet kapott betöltve az első helyen). Jelenleg tehát, ha Netscape vagy appletviewer segítségével URLConnection akkor is működik, ha egy tűzfal mögött, és használjon egy http proxy kijutni.
Mellesleg, néhány (sok?) Tűzfalak nem nyújtanak DNS host nevét felbontás nevét házigazdák a tűzfalon kívül, ami azt jelenti, hogy próbál csatlakozni “host.name.org” a tűzfalon belülről sikertelen lesz (kapsz egy biztonsági kivétel, mint a
“Biztonság Kivétel: socket.connect: xxx.yyy.zzz-> xxx.yyy.zzz”
– Vegye figyelembe az azonos fogadó nevét mindkét oldalán a nyíl). Mi happending hogy a Netscape applet biztonsági menedzser megpróbálja lefordítani host neveket IP-címeket, majd összehasonlítja ezeket az IP-címeket (ez az, hogy megakadályozza a DNS spoofing). Mivel azonban a neveket nem lehet lefordítani a tűzfal beállít egy UnknownHost kivételt dob, ami viszont fordult a fenti biztonsági kivételt. A megoldás az, hogy az oldal betöltése tartalmazó applet egy IP-cím helyett a host nevet az url (például “http://123.42.18.19/java/CoolApp.html”) – getCodeBase (). GetHost () és a belső szerver neve, akkor mind vissza a IP címet (azaz a “123.42.18.19”), amely viszont a “lefordított”, hogy ugyanazt az IP-címet. Az egyetlen hátránya az, hogy ez nem fog működni a MSIE (úgy tűnik, hogy ehhez használja gazdaneveket és hányás a “ClassFile” nem található “, ha az IP-címek). Alternatívaként a Netscape 4.0 vagy újabb beállíthat egy biztonsági előnyben, amely megmondja, hogy a Netscape nem próbálja és lookup az IP-címet, hanem a bizalom a proxy; lásd a trustProxy előnyben.
Megjegyzés: Ahhoz, hogy a proxy alatt JDK 1.0.2 be kell állítani az ingatlan proxySet igaz, meg a proxyHost tulajdonság, hogy pont a proxy szerver, és állítsa be a proxyPort tulajdonság a megfelelő portot. A appletviewer ezeket is be lehet állítani a Applet -> Tulajdonságok menüpontot. JDK 1.1 kell beállítani http.proxyHost a megfelelő befogadó és http.proxyPort a megfelelő portra; beállítás http.proxyHost null letiltja a proxy.
Következmények SOCKS
Jelenleg fejlesztés alatt Netscape a helyzet itt is ugyanazt, mint a legközelebbi. Azonban, ahogy SOCKS működik ez lehetséges, hogy SOCKS a java.net.Socket kódot (Nos, valójában a SocketImpl kód), így magukba foglalják a SOCKS protokoll réteg, és lehetővé teszi a végrehajtását a biztonsági politika indokolatlan negatív hatással van az emberek tűzfalak mögött. Ez megtörtént a JDK 1.0.2, de sajnos nem a Netscape (azonban a félig hivatalos nyilatkozatot tőlük, hogy ez tekinthető a hiba, és mi is így gondoljuk, hogy ez fix valamikor – csak ne kérdezd, ha !). Tehát, ha van egy SOCKS szerver, akkor minden rendben van, amíg használja a appletviewer vagy java.net.URLConnection, de a java.net.Socket alatt Netscape kapsz egy SecurityException.
Ha dolgozik az OS / 2 (legalább Warp 4), akkor érdemes megjegyezni, hogy ez a rendszer az alapvető TCP / IP stack már tartalmaz támogatást SOCKS. Ezért ez a rendszer akkor java.net.Socket alatt Netscape akkor is, ha mögötte egy SOCKS proxy (köszönet Mark James ezt az infót).
Bár a témában, a SOCKS támogatja a JDK engedélyezve beállításával socksProxyHost tulajdonság, hogy pont a zokni szerver; ha a SOCKS kiszolgáló nem figyel az alapértelmezett zokni port (1080), akkor is be kell állítania a socksProxyPort tulajdonság a megfelelő portot. A appletviewer ezeket is be lehet állítani a Applet -> Tulajdonságok menüpontot.
httpclient
Mivel a httpclient használ java.net.Socket kapcsolódásokat, a biztonsági korlátozások és használatának beállításai httpclient megegyeznek a fent leírt java.net.Socket.
összefoglalás
A táblázat, ahol megengedett, hogy csatlakozzon használatakor java.net.Socket: