Programiranje

Nasvet Java 42: Napišite Java programe, ki delujejo s požarnimi zidovi na osnovi proxy

Skoraj vsako podjetje se ukvarja z zaščito svojega notranjega omrežja pred hekerji in tatovi. Eden najpogostejših varnostnih ukrepov je popolna prekinitev omrežja podjetja z interneta. Če se slabi ne morejo povezati z nobenim od vaših strojev, jih ne morejo vdreti. Žalosten stranski učinek te taktike je, da notranji uporabniki ne morejo dostopati do zunanjih internetnih strežnikov, kot sta Yahoo ali JavaWorld. Da bi rešili to težavo, skrbniki omrežij pogosto namestijo nekaj, kar se imenuje "proxy strežnik". V bistvu je proxy storitev, ki deluje med internetom in notranjim omrežjem ter upravlja povezave med obema svetovoma. Proxyji pomagajo zmanjšati zunanje varnostne grožnje, hkrati pa internim uporabnikom še vedno omogočajo dostop do internetnih storitev. Medtem ko Java olajšuje pisanje internetnih odjemalcev, so ti odjemalci neuporabni, razen če lahko obidejo vaš proxy. Na srečo Java olajša delo s pooblaščenci - če poznate čarobne besede, to je.

Skrivnost kombiniranja Jave in strežnikov proxy je v aktiviranju nekaterih sistemskih lastnosti v času izvajanja Java. Zdi se, da te lastnosti niso dokumentirane in jih programerji šepetajo kot del folke o Javi. Če želite delati s strežnikom proxy, mora aplikacija Java navesti informacije o samem strežniku proxy in uporabniške podatke za namene preverjanja pristnosti. Preden začnete delati z internetnimi protokoli, morate v program dodati naslednje vrstice:

System.getProperties (). Put ("proxySet", "true"); System.getProperties (). Put ("proxyHost", "myProxyMachineName"); System.getProperties (). Put ("proxyPort", "85"); 

Prva vrstica zgoraj sporoča Javi, da boste za povezave uporabljali strežnik proxy, druga vrstica določa stroj, v katerem strežnik proxy živi, ​​tretja vrstica pa označuje, na katerih vratih posluša strežnik proxy. Nekateri pooblaščenci zahtevajo, da uporabnik vnese uporabniško ime in geslo, preden je dovoljen dostop do interneta. Verjetno ste se s tem vedenjem srečali, če za požarnim zidom uporabljate spletni brskalnik. Kako izvesti preverjanje pristnosti:

Povezava URLConnection = url.openConnection (); Niz gesla = "uporabniško ime: geslo"; Niz encodedPassword = base64Encode (geslo); connection.setRequestProperty ("Proxy-Authorization", encodedPassword); 

Ideja za zgornjim fragmentom kode je, da morate prilagoditi glavo HTTP, da pošlje vaše uporabniške podatke. To se doseže z setRequestProperty () pokličite. Ta metoda omogoča manipulacijo z glavami HTTP, preden je zahteva poslana. HTTP zahteva, da sta uporabniško ime in geslo kodirana v osnovi64. Na srečo obstaja nekaj API-jev v javni domeni, ki bodo izvedli kodiranje namesto vas (glejte razdelek Viri).

Kot lahko vidite, dodajanja podpore proxy v vašo aplikacijo Java ni veliko. Glede na to, kar zdaj veste, in nekaj raziskav (morali boste ugotoviti, kako vaš posrednik obvladuje protokol, ki vas zanima, in kako ravnati z avtentikacijo uporabnika), lahko svoj proxy uporabite z drugimi protokoli.

Posredovanje FTP

Scott D. Taylor je poslal čarovniško začaranost, da bi se ukvarjal s proxyjem protokola FTP:

defaultProperties.put ("ftpProxySet", "true"); defaultProperties.put ("ftpProxyHost", "ime-gostitelja proxy-ja"); defaultProperties.put ("ftpProxyPort", "85"); 

Nato lahko do URL-jev datotek dostopate s protokolom "ftp" prek:

URL URL = nov URL ("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt"); 

Če ima kdo primere uporabe posredniškega strežnika z drugimi internetnimi protokoli, bi jih rad videl.

Opomba: Primer kode (Example.java) je bil preizkušen samo z JDK 1.1.4.

Ron Kurr je v zadnjih osmih letih delal kot programski inženir v podjetju Cabletron Systems z uporabo C ++, Unix in NT. V zadnjih dveh letih se je posvetil Javi in ​​internetnim tehnologijam.

Preberite več o tej temi

  • java.lang.System //www.javasoft.com/products/jdk/1.1/docs/api/java.lang.System.html
  • java.net.URLConnection //www.javasoft.com/products/jdk/1.1/docs/api/java.net.URLConnection.html
  • API odjemalca HTTP //www.innovation.ch/java/HTTPClient/
  • Cabletron Systems //www.cabletron.com/
  • CsProxy (brezplačni proxy strežnik) //www.cabletron.com/csproxy/
  • Ustrezni RFC-ji //www.cabletron.com/csproxy/handbook/rfc/

To zgodbo, "Java Nasvet 42: Napišite Java programe, ki delujejo s požarnimi zidovi na osnovi proxy", je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found