Commons Net FTPHTTPClient: HTTP proxy tunelak FTP pasiborako
Tunelatu FTP kontrola eta datu-konexio pasiboak HTTP proxy baten bidez Commons Net-en bezero dedikatuarekin.
Apache Commons Net-ek FTPHTTPClient dauka HTTP CONNECT proxy baten bidez FTP egiteko. Bere ezaugarri erabilgarria ez da FTP saio-hasierako ataka lortzea soilik: zerrendek eta fitxategi-transferentziek erabiltzen dituzten datu-konexio pasiboetarako proxy tunelak ere ezartzen ditu.
Eraikitzaileak proxyaren amaierako puntua eta aukerako proxy-kredentzialak onartzen ditu. FTP zerbitzaria connect-(r)en argumentua izaten jarraitzen du, eta login-(e)k FTP kontua jasotzen du:
FTPHTTPClient ftp = new FTPHTTPClient(
"proxy.example.net", 8080, proxyUser, proxyPassword
);
try {
ftp.connect("ftp.example.net", 21);
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
throw new IOException(ftp.getReplyString());
}
if (!ftp.login(ftpUser, ftpPassword)) {
throw new IOException(ftp.getReplyString());
}
ftp.enterLocalPassiveMode();
if (!ftp.setFileType(FTP.BINARY_FILE_TYPE)
|| !ftp.retrieveFile(remoteFile, output)) {
throw new IOException(ftp.getReplyString());
}
ftp.logout();
} finally {
if (ftp.isConnected()) {
ftp.disconnect();
}
}
Transferentzia-zati honek Commons Net-en FTP inportazioak, java.io.IOException, aplikazioak emandako kredentzial-aldagaiak eta deitzailearen jabetzako irteera-fluxua suposatzen ditu. remoteFile zerbitzariaren aldeko fitxategi-izena da. Aplikazioak bere irteera-fluxua une egokian itxi behar du ere.
Ezarri modu pasiboa konektatu ondoren eta datu-eragiketa baten aurretik. FTPHTTPClient-en inplementazioak datu-konexioak baztertzen ditu modu aktiboan. Modu pasiboan, datuen amaierako puntua negoziatzen du FTP-rekin eta beste konexio bat irekitzen du HTTP proxyra, eta gero CONNECT tunel bat eskatzen du amaierako puntu horretara.
Bigarren tunel horrek ohiko muga bat azaltzen du: FTP kontrol-atariko proxy-baimena ez da nahikoa. Baimendutako helmugek eta atakek zerbitzariaren datu-amaierako puntu pasiboak barne hartu behar dituzte. Agur eta saio-hasiera arrakastatsuek kontrol-bidea funtzionatu duela baino ez dute frogatzen.
Inplementazioak Basic proxy-autentifikazioa ematen du proxyaren erabiltzaile-izena eta pasahitza badaude. Hori FTP USER/PASS trukearen desberdina da. Beste autentifikazio-mekanismo bat eskatzen duen proxyak konektore bateragarria behar du; eraikitzaileak ez ditu eskema guztiak eskuragarri jartzen.
Commons Net-ek klase hau esperimentaltzat dokumentatzen du, beraz, ebaluatu aplikazioaren eta proxyaren baldintzen arabera hartu aurretik. FTP bezeroa da, ez FTPS edo SFTP bezeroa. SOCKS zerbitzu bat eskuragarri dagoenean FTPS-rako, FTPSClient-en socket-proxy interfazea bezero-bide bereizia da. CONNECT-ek bidea ematen du eta ez ditu bera FTP kredentzialak edo fitxategi-edukiak zifratzen.
Mantendu erroreak sortu zituen etapari lotuta: HTTP ukapena tunela konfiguratzean, FTP saio-hasieraren ukapena edo FTP/datu-transferentziako hutsegitea. FTP pasahitza ordezteak ezin du datu-atariko pasiboa baztertzen duen proxy-politika konpondu.