La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Mod.8 Servizi Web di base World Wide Web:definizioni e componenti http Scripting server side Scripting client side WebServer:APACHE Proxy Server :Squid.

Presentazioni simili


Presentazione sul tema: "1 Mod.8 Servizi Web di base World Wide Web:definizioni e componenti http Scripting server side Scripting client side WebServer:APACHE Proxy Server :Squid."— Transcript della presentazione:

1 1 Mod.8 Servizi Web di base World Wide Web:definizioni e componenti http Scripting server side Scripting client side WebServer:APACHE Proxy Server :Squid

2 2 Servizi Web

3 3 Premesse* Sul TCP/IP si basa la comunicazione fra i nodi della rete Internet. Ad ogni nodo della Rete è assegnato un indirizzo IP composto da quattro numeri compresi tra 0 e 254 (es.: ). Mediante opportuni meccanismi (DNS) è possibile convertire gli IP address numerici in indirizzi mnemonici (es.: = magritte.sci.uniroma1.it). Sopra al protocollo TCP/IP possono viaggiare informazioni codificate secondo altri protocolli di comunicazione (FTP, Telnet, HTTP).

4 4 Introduzione* Introduzione al World Wide Web Come sistema di comunicazione, il World Wide Web è in grado di distribuire e collezionare informazioni globalmente e in modo istantaneo. Per gli utenti il Web rappresenta una visione dinamica dei lavori e delle idee di milioni di persone e di organizzazioni mondiali. Il Web è un "integratore" di informazioni su Internet. Java, invece di fare affidamento sui server del Web per fornire informazione e funzionalità, rende possibile lesecuzione dei contenuti attraverso un browser che supporta Java. Il Web supporta un certo numero di comunicazioni, informazioni e interazioni utilizzando lipertesto per organizzare le informazioni. Il linguaggio Java può estendere le capacità del Web nel campo della comunicazione, della distribuzione delle informazioni e dellinterattività. Panoramica del Web Il World Wide Web fu originariamente sviluppato per poter permettere lo scambio di informazioni necessarie per i ricercatori della comunità di fisica. Oggi il World Wide Web è un sistema di distribuzione delle informazioni globale. Alla base cè lipertesto, termine usato per descrivere testi che non sono costretti ad essere sequenziali; lipertesto collega documenti per formare un sistema di relazioni e fa uso della possibilità di estendere e di accrescere il significato di un "singolo" testo per mezzo di collegamenti ad altri testi.

5 5

6 6 WWW Nel 1989 un ricercatore del CERN di Ginevra, propose un sistema di ipertesto che permettesse unefficiente distribuzione di informazioni per i membri della comunità di fisica. Il sistema proposto era costituito da: Uninterfaccia utente che potesse andar bene per tutte le piattaforme e che avrebbe permesso agli utenti di accedere alle informazioni da computer differenti. Uno schema per questa interfaccia in modo da accedere a diversi tipi di documento e a protocolli di informazione. Una norma per laccesso universale, che avrebbe permesso ad ogni utente di network di accedere a qualunque informazione. Verso la fine del 1990, un prototipo del World Wide Web era operativo e fu completata uninterfaccia per lutente (chiamata "WWW"). Successivamente linterfaccia World Wide Web fu resa disponibile pubblicamente dal CERN.

7 7 WWW: uno spazio Internet Il Web è un sistema realmente distinto da Internet e dai suoi browser, non è un network, ma un sistema di applicazioni, un set di programmi software. Inoltre il World Wide Web può essere sviluppato e usato su molti tipi diversi di network non necessariamente network di Internet. Il World Wide Web è un sistema di informazione e di comunicazione basato su un ipertesto. Viene utilizzato, in genere, su network di computer con comunicazioni di dati operanti secondo un modello client/server. I client del Web (browser) possono accedere a protocolli e a informazioni ipermediali

8 8 Web server

9 9 Java e il World Wide Web * Il metodo usato inizialmente era basato su di interfaccia che poteva accettare un input dallutente che raggiungeva il server del Web per essere elaborata. Tutto ciò era comunque abbastanza statico e lontano da un certo livello di interattività. Java ha il merito di cambiare il modello statico di comunicazione sul Web, dà la possibilità agli utenti di fare qualcosa in quellindirizzo: lavorare in modo creativo con linformazione e interagire con i contenuti. La chiave delle capacità di Java sono i contenuti eseguibili. Contenuto eseguibile è un termine generale che identifica limportante differenza tra il contenuto che può caricare un browser del Web che supporta Java e quello che può caricare un browser che non supporta Java. In un browser pre-Java (cioè che non supporta Java) il contenuto caricato dal Web è definito in termini di specificazioni Multipurpose Internet Mail Extensions (MIME), che includono una varietà di formati multimediali di documenti, questa specificazione di contenuto è realizzata in modo che il contenuto caricato dal Web possa essere visualizzato nel browser o in unapplicazione di aiuto. Anche un browser dellera Java (cioè che supporta Java) carica i contenuti definiti nelle specificazioni MIME e li visualizza ma, la differenza chiave è che questo tipo di browser è in grado di riconoscere uno speciale oggetto dellipertesto che è il tag. Quando viene caricata una pagina Web che contiene questo tag, il browser riconosce che un tipo speciale di programma Java, chiamato applet, è associato a quella pagina, il browser quindi carica lapplet che è in formato bytecode lo interpreta e lo manda in esecuzione sul terminale dellutente. Queste operazioni di caricamento e di esecuzione avvengono in maniera trasparente, senza che lutente debba compiere operazioni.

10 10 Sunto di applet Riassumendo i processi che avvengono quando un utente, con un browser che supporta Java, richiede una pagina contenente un applet, sono i seguenti: () Lutente si collega a un pagina HTML sul server del Web; La pagina HTML viene caricata e visualizzata dal browser dellutente. La pagina contiene il tag con il nome del file che identifica lapplet sul server; Lapplet, in formato bytecode, viene caricato dal browser; Il browser interpreta i bytecode e visualizza loutput sul terminale dellutente; Lutente può avere interazioni con lapplet ma, in genere non ulteriori caricamenti da parte del server del Web, in quanto lapplet è interamente caricato e in esecuzione nel browser dellutente;

11 11

12 12

13 13 Server Web*

14 14 Vantaggi nelluso di JSP* In primo luogo (a differenza di soluzioni come ASP e PHP) le JSP sono in chiave Java a e quindi eredi di tutti gli indiscussi vantaggi che hanno reso questo linguaggio di programmazione precompilato uno dei più sfruttati nel mondo della programmazione ad oggetti; prima fra tutti la quasi totale portabilità (intesa come capacità di un software di funzionare correttamente su stazioni che utilizzano un qualsiasi tipo di piattaforma). Le JSP sono indicate per l'implementazione di programmi applicativi attivi dal lato server, essendo infatti svincolate dal tipo di sistema operativo non necessitano di nessuna modifica nemmeno dal passaggio tra server gestiti in maniera diversa (possono per esempio venire supporate sia da un server Windows che da un server Unix). Ovviamente l'aspetto della portabilità non dev'essere visto esclusivamente sotto l'aspetto server: anche dal lato client questa tecnologia offre un completo svincolamento sia dal tipo di SO che dal tipo di browser (il linguaggio Java viene infatti interpretato dal server sollevando il browser da questo compito, limitando la sua funzione a interprete di pagine HTML). Pregio importante, ma non unico quello dell'indipendenza dalla piattaforma, le JSP inoltre permettono una molto vantaggiosa possibilità di riutilizzare il codice: si può infatti di includere nelle pagine sezioni di codice (java bean) che rendono molto più abbordabile l'implementazione di applicazioni anche complesse anche senza approfondite conoscenze di Java, rendendo inoltre molto più semplice la modifica e la manutenzione delle pagine stesse.

15 15 Java Server Pages(server side)* La tecnologia Java Server Pages è una soluzione multipiattaforma per realizzare pagine HTML dinamiche, dal lato server. Le pagine JSP sono un'evoluzione dei già collaudati servlet Java, create per separare i contenuti dalla loro presentazione: una pagina JSP si presenta, infatti, come un normale documento in linguaggio HTML, frammentato da sezioni di codice Java. Si potranno quindi modificare le parti sviluppate in Java lasciando inalterata la struttura HTML o viceversa. Principali vantaggi Come si sarà già dedotto, affinché le Java Server Pages siano competitive nel campo dello sviluppo web, è necessario che offrano degli allettanti vantaggi: cosa dovrebbe spingere, dunque, uno sviluppatore a scegliere questa tecnologia?

16 16 Protocollo HTTP* Il HTTP protocollo funziona così: tu mi chiedi una pagina web e io te la mando. Punto, basta. Non so chi sei, no so dove stai e non me ne importa niente. Basta che mi dai un Internet Protocol (IP) verso cui spedire il pacchetto e io lo riesco a far arrivare a destinazione. Sfortunatamente un protocollo così semplice non ci permette una grande sofisticazione nel processo comunicativo. È un po' come vivere senza la memoria.

17 17 HTTP* Il protocollo HTTP (Hyper TextTransfer Protocol) viene usato da tutti i client e server web e gestisce il modo con cui questi si scambiano pagine HTML o altri file. Il client web (cioè un browser come Microsoft Internet Explorer, Netscape Navigator, Opera ecc.) utilizza l'HTTP per richiedere file al server web. In primo luogo vengono richieste pagine HTML, che dopo essere state ricevute, vengono processate dal browser che provvede a fare richiesta di eventuali nuovi file richiamati nel codice HTML (immagini, fogli di stile css, script esterni ecc.) e a visualizzare il tutto sul monitor dell'utente. Ogni richiesta http consta di: - Metodo (GET, HEAD, PUT...) - URI (Uniform Resource Identifier) Il path o indirizzo completo della risorsa richiesta. - Versione del protocollo (HTTP/1.0 o HTTP/1.1) Un esempio tipico di una richiesta HTTP è: GET / HTTP/1.0 Alla richiesta possono seguire degli HTTP headers come Accept-Language, Date, Expires e vari altri (possono essere arbitrariamente definiti fra broswer e server). Esistono attualmente 3 specifiche del protocollo HTTP: HTTP/0.9 - Di fatto non è più utilizzato da nessuna parte HTTP/1.0 - Ancora abbastanza utilizzato e supportato da ogni browser e web server HTTP/1.1 - Introduce nuovi metodi (OPTIONS, TRACE, DELETE, PUT, CONNECT) e la gestione di Virtual Host. E' supportato da tutti i browser e server non troppo vecchi ed è utilizzato nella maggior parte dei casi.

18 18 HTTP* Consente l'accesso a documenti ipertestuali in cui vengono realizzati dei link tra file di vario genere (non solo testuali) fisicamente residenti anche su host differenti. È gestito da un software (server HTTP) residente sugli host che intendono essere fornitori di informazioni. Chi vuole accedere alle informazioni fornite dal server HTTP deve utilizzare un software client (browser) in grado di interpretare le informazioni inviate dal server. HTTP è un protocollo "stateless": ad ogni richiesta si effettua una connessione al server che viene chiusa al termine del trasferimento dell'oggetto richiesto (pagina HTML, immagine, ecc.). HTTP identifica le risorse in rete mediante URL (Universal Resource Locator):

19 19 $ telnet magritte.sci.uniroma1.it 80 Connected to magritte.sci.uniroma1.it port 80 GET /index.html Content-type: text/html Welcome to Magritte Magritte, web server del progetto Grafica Avanzata

20 20 Il server HTTP * È un programma che "gira" su un server in attesa di una richiesta di connessione sul suo socket (la porta assegnatagli, tipicamente la 80). Svolge tre compiti fondamentali: –1)invia al client le risorse disponibili localmente, richieste mediante l'indicazione di una URL; –2)richiama eventuali procedure esterne con cui comunica mediante l'interfaccia CGI (Common Gateway Interface) per lo scambio di parametri e per ottenere in risposta informazioni in formato HTML; l'interfaccia CGI –3)effettua, ove esplicitamente richiesto dalla sua configurazione, l'autenticazione degli utenti mediante username e password. Il server HTTP svolge quindi un ruolo di interfaccia tra il client remoto che effettua delle richieste sul socket ed il sistema che lo ospita, il suo filesystem ed altri programmi che girano sulla macchina server.

21 21 Microsoft :ASP /IIS(server side)* In questo contesto che vengono utilizzate tecnologie come Microsoft Internet Information Server (IIS), Macromedia ColdFusion Server, Apache Server ecc. Impiegando un po' di risorse sul server ci permettono di comunicare più intelligentemente. In un senso, introducono la memoria nei processi di comunicazione HTTP. MS/IIS (il server) per esempio, quando riceve una richiesta dal cliente per una pagina mette da parte un po' di spazio nella sua memoria e ci scrive il tuo nome, indirizzo, la pagina e un mucchio di altre cose (riguardo a chi sei e cosa hai chiesto. Quando richiedi un'altra risorsa il server controlla la tua area di memoria riconoscendoti subito. Usando Active Server Pages (ASP) sul server (IIS), io posso guardare in quest'area di memoria e, per esempio, trovare il tuo nome e stamparlo in cima alla pagina prima di mandartela. ASP è la tecnologia per manipolare le informazioni che IIS raccoglie e mantiene. In conclusione possiamo dire che tecnologie come IIS e ASP espandono il protocollo HTTP con l'introduzione della continuità e ci permettono di maneggiare la conversazione fra il server e il cliente in una maniere più ricca.

22 22 Linguaggi per il Web* Si possono suddividere i linguaggi di solito utilizzati per il Web in quattro tipologie: HTML: è in formato testo e non è un linguaggio nel senso tradizionale, ma un impaginatore per consente di posizionare degli oggetti nella pagina con le caratteristiche indicate, naturalmente per la sua peculiarità risulta essere statico e non interagisce con l'utente e non può prendere decisioni se non per i formulari, mentre per la sua interpretazione ha bisogno di un browser; linguaggi compilati: sono quei linguaggi abbastanza complessi in cui il sorgente (un file di testo con le operazioni da eseguire) viene compilato in codice macchina e viene impacchettato in un eseguibile utilizzabile solo nella forma e per le operazioni per cui è stato progettato; linguaggi semicompilati: in realtà a questa classe appartiene solo Java perché è un linguaggio compilato in un formato intermedio tra il file ASCII e il file binario, tale formato si chiama bytecode e va interpretato sul client da una macchina virtuale chiamata Java Virtual Machine, in tal modo all'atto della ricezione tale macchina completa la compilazione e rende il file eseguibile; linguaggi interpretati: sono quei linguaggi che risultano molto simili all'HTML, ma hanno potenzialità maggiori perché consentono di effettuare controlli e operazioni complesse, vengono inviati in file ASCII, quindi con codice in chiaro che viene interpretato ed eseguito riga per riga dal browser in modalità runtime. Il concetto di script è comprensibile ricordando che script in inglese significa "copione" o "sceneggiatura", ed infatti l'utilizzo è proprio questo: il browser legge una riga, la interpreta e la esegue, poi passa alla successiva e fa la stessa cosa, e così di seguito fino alla chiusura dello script.

23 23 Linguaggi di scripting(client side) Quali sono i vantaggi e gli svantaggi tra linguaggi di scripting e linguaggi compilati? Cerchiamo di riassumerne qualcuno: il linguaggio di scripting è più sicuro ed affidabile perché in chiaro e da interpretare, quindi può essere filtrato; per lo stesso Javascript la sicurezza è quasi totale, perché solo alla sua prima versione erano stati segnalati dal CIAC (Computer Incident Advisory Committee) dei problemi di lieve entità, tra cui la lettura della cache e dei siti visitati, dell'indirizzo e dei file presenti su disco, tali "falle", però, sono state corrette già con le versioni di Netscape successive alla 2.0; gli script hanno limitate capacità, per ragioni di sicurezza, per cui non è possibile fare tutto con Javascript, ma occorre abbinarlo ad altri linguaggi evoluti, magari più sicuri, come Java, e tale limitazione è ancora più evidente se si desidera operare sull'hardware del computer, come ad esempio il "settaggio" in automatico della risoluzione video o la stampa di un documento; un grosso problema è che il codice è visibile e può essere letto da chiunque, anche se tutelato con le leggi del copyright, ma questo, che secondo me è un vantaggio, è il prezzo da pagare da chi vuole utilizzare il web: la questione dei diritti d'autore è stata rivoluzionata con l'avvento di Internet (si veda soprattutto l'MP3), e la tutela è molto labile e inadeguata alle leggi attuali, per cui occorre prendere la situazione con molta filosofia; il codice Javascript viene eseguito sul client per cui il server non è sollecitato più del dovuto; uno script eseguito sul server, invece, sottoporrebbe questo ad una dura sollecitazione e i server di capacità più limitate ne potrebbero risentire se interrogati da più utenti; il codice dello script deve essere scaricato completamente prima di poter essere eseguito, e questo è il risvolto della medaglia di quanto detto precedentemente, per cui se i dati che uno script utilizza sono tantissimi (ad esempio una raccolta di citazioni da mostrare in maniera casuale), ciò comporterebbe un lungo tempo di scaricamento, mentre l'interrogazione dello stesso database sul server sarebbe più rapida

24 24 Il linguaggio HTML HTML = HyperText Markup Language È un semplice "linguaggio" di marcatura del testo, ereditato da SGML (Standard Generalized Markup Language). Consente di esprimere dei collegamenti ad altri oggetti (pagine HTML, immagini, ecc.) mediante URL. Consiste in un insieme di tag che consentono di caratterizzare porzioni di testo; è compito del client (browser) l'interpretazione dei tag. Esempio: La mia pagina Benvenuti! Questa è la mia pagina. Visita Matematica. HTML HTMLHTML

25 25 Alcune regole per scrivere file.js In linea di principio uno script può essere inserito in due modi all'interno di pagina HTML inserendo il codice nel documento; caricandolo da un file esterno. l'uso del file esterno, infatti, è dettato dal limite di dimensione di 32K che deve rispettare una pagina web. Script esterni In quest'ultimo caso (è anche quello più semplice a spiegarsi) lo script è salvato in un file con estensione.js. Viene richiamato con l'attributo SRC del tag SCRIPT: dove la specificazione di Language è facoltativa, poiché la stessa estensione del file basta a dimostrare il linguaggio adoperato, ma si consiglia proprio per identificare la versione. Il nome del file può essere indicato con un URL relativo o assoluto. Tale file esterno viene eseguito all'interno della pagina HTML, per cui lo script viene solo letto come file di testo, trasferito nell'HTML nella posizione di richiamo e qui eseguito. Per tale motivo il file va salvato come testo ASCII, senza caratteri di controllo e senza tag HTML o elementi di altri linguaggi per non generare errori, e si può adoperare un qualsiasi editor molto semplice (in Windows è consigliato NotePad o Blocco Note).

26 26 Esempio Java Script(client side) 1.Scrivere con Blocco Note il seguente comando: alert('Sono un file esterno'), e salvarlo con il nome prova.js; 2. Scrivere in un altro file il seguente codice HTML: e salvarlo nella stessa directory del file Javascript; 3.Caricare la pagina HTML in un browser

27 27 Php(scripting server side) PHP è un linguaggio di scripting server-side che consente lo sviluppo sia di siti generati dinamicamente, sia di applicazioni che incorporano connessioni a database e data processing. La flessibilità e scalabilità ne fanno uno dei più popolari linguaggi di scripting server-side su piattaforme Unix/Linux. Inoltre, la precisa definizione della sua sintassi e dei suoi costrutti lo rendono più amichevole di altri linguaggi tipo Perl, Python, C/C++ o ASP. Il PHP offre una marea di funzionalità per gli sviluppatori Web, che consentono di produrre un codice solido, compatto e riutilizzabile. Qui l'acronimo sta per PHP Hypertext Pre-processor. In una frase, il PHP è un linguaggio di programmazione. Lo scopo del linguaggio è di consentire agli sviluppatori web di realizzare, in modo veloce, pagine dinamiche. Per pagine dinamiche, in questo contesto, intendiamo pagine il cui contenuto viene, almeno in parte, generato nel momento in cui le stesse vengono richieste al web server. Un esempio classico di pagina dinamica è fornito dai ben noti motori di ricerca: i risultati che vengono restituiti a seguito di un'interrogazione non sono pagine web statiche, bensì documenti generati "su misura", sulla base della nostra richiesta. Tornando al PHP, la definizione "ufficiale" tratta dal manuale in lingua inglese, su chiarisce le caratteristiche peculiari di questo linguaggio, e precisamente:www.php.net Il PHP è un linguaggio di scripting. E' un linguaggio "HTML-embedded, Opera server-side, cioè lato server.

28 28 ESEMPIO PHP Il modo più intuitivo per introdurre un concetto è, molto spesso, quello di ricorrere ad un esempio, considerando il listato seguente. Codice che scompare! echo " Codice che scompare "; echo " In un precedente... "; Salviamo il tutto in un file con estensione.php4 e carichiamo il file (o, come si dice, facciamone l'upload) sul nostro spazio web. Si noti che, in questo passaggio, stiamo assumendo di avere a disposizione un server con supporto PHP: almeno per ora può essere indifferentemente quello del nostro Internet Service Provider o il nostro PC, se abbiamo installato il software necessario; al contrario, in mancanza di questo requisito non saremo in grado di effettuare nessuna prova.

29 29 Esempio Php Accediamo adesso alla pagina (l'indirizzo sarà del tipo e visualizziamone il codice HTML. Se tutto ha funzionato quello che vedremo sarà: Codice che scompare! Codice che scompare In un precedente... Osserviamo subito che non vi è nessuna traccia dello script PHP: ci viene restituito solo il risultato dell'elaborazione e non esiste alcun modo per risalire al codice originale. Se non fossimo stati noi a scrivere la pagina, non avremmo modo di sapere se questa fosse già così (cioè non conteneva codice ma solo HTML puro) o se, oltre a scrivere quello che vediamo, avesse anche calcolato 50 numeri primi o fatto chissà cos'altro…

30 30 CGI:Common Gateway Interface(SERVER SIDE) Si tratta di uno standard in base al quale è possibile fare interagire i web server con dei programmi. È infatti richiesto che il web server non sia un semplice porgitore di pagine statiche, ma che possa generare al volo delle pagine dal contenuto variabile in base a varie condizioni e, soprattutto, in base all'input dell'utente (si pensi per esempio ai motori di ricerca). I programmi scritti secondo lo standard CGI vengono quindi detti programmi CGI e girano sul web server. Il web server manda in esecuzione i programmi CGI man mano che ciò si rende necessario in base all'attività dei visitatori che accedono al sito. Tipicamente l'uso dei programmi CGI è abbinato alla presenza di form sulle pagine web. Il form (tag html ) consente di fare apparire su una pagina web dei campi di input nei quali l'utente immette informazioni; quando poi l'utente clicka il bottone che provoca l'invio del form, il browser richiede al web server di eseguire il programma CGI specificato nel form stesso (all'attributo ACTION) ed invia come dati il contenuto di tutti i campi del form (quelli digitati dall'utente e quelli eventuali di tipo hidden, nascosti). Il programma CGI, mandato in esecuzione dal web server, elabora i dati ricevuti e produce una risposta (di solito in formato html) che viene inviata al browser dell'utente da cui era partita la richiesta.

31 31 Il browser è l'applicazione client di questo sistema ad architettura "client/server". Gira sulla macchina dell'utente remoto, legge ed interpreta l'output in formato HTML. Visualizza o gestisce le informazioni codificate in formati a lui noti (es.: immagini GIF o JPEG, filmati QuickTime, scene VRML) e rimanda ad altri programmi esterni presenti sulla macchina client per la gestione di formati non conosciuti (es.: documenti Word, documenti Postscript, ecc.). Le procedure CGI non vengono eseguite sulla macchina client. I programmi in linguaggio Java vengono invece scaricati sul client, compilati in tempo reale ed eseguiti su di esso. Il browser consente di impaginare l'output indipendentemente dalla piattaforma che lo ospita (X11, Macintosh, Windows, ecc.). L'interfaccia CGI CGI = Common Gateway Interface È il canale di comunicazione tra il server HTTP (le pagine HTML) e le procedure software che girano sul sistema (procedure e script CGI). Consente di passare dei parametri ad un programma esterno attraverso una form o una semplice URL. Consente anche di catturare l'output della procedura (tipicamente in formato HTML) e di inviarlo al client dell'utente remoto. I metodi per il passaggio dei parametri alla procedura esterna sono due: GET: tramite variabile di ambiente (QUERY_STRING); POST: tramite lo standard input. Il metodo utilizzato viene comunicato alla procedura CGI mediante la variabile di ambiente REQUEST_METHOD

32 32 Esempio di CGI L'interfaccia CGI Uno script CGI può essere richiamato mediante una form HTML: Nome: Età: Oppure mediante una URL diretta (il passaggio dei parametri avviene implicitamente con il metodo GET) : Paolo Forte

33 33 Funzionalità del Browser(client side)

34 34

35 35 Altri servizi

36 36 Apache :server Web Introduzione Apache è un potente WEB server multipiattaforma. Le statistiche dicono che è il più utilizzato al mondo, e tutto lascia prevedere che lo sarà ancora per qualche anno. Apache è disponibile nel sito ufficiale insieme ai sorgenti e a tutta la documentazione. Tutte le distribuzioni di GNU/Linux lo includono come pacchetto, tipicamente già compilato e configurato: è sufficiente una installazione base del sistema operativo, ed anche l'utilizzatore più sprovveduto si ritrova con un WEB server installato (magari a sua insaputa...).www.apache.org

37 37 Introduzione APACHE Apache è un server HTTP freeware (completo di sorgenti C), sviluppato da un certo numero di programmatori. La prima versione, basata su server NCSA, è stata sviluppata nel Poiché era un insieme di patches sul server NCSA è stato chiamato un patchy server, da cui il nome Apache Server. Oggi il WebServer Apache è considerato il server web più popolare ed affidabile al mondo per le sue caratteristiche sofisticate, le eccellenti performance, sia perché è gratuitamente reperibile, sia perché la sua estraneità da strategie di mercato, fanno sì che le varie correzioni e patch siano immediatamente disponibili appena corretti, garantendo in questo modo affidabilità e robustezza. Circa il 60% dei server web al mondo sono server Apache

38 38 Preliminari per Apache Quindi dovrebbe essere disponibile un piccolo script di shell che si incarica di avviare, fermare e verificare lo stato del server. Lo script esegue una di queste funzioni a seconda che sia stato invocato con il parametro start, stop oppure status; esiste poi anche il parametro restart che ha l'ovvio significato. Sulla distribuzione Red Hat 6.2 il comando è # /etc/rc.d/init.d/httpd status httpd (pid ) is running... mentre per la Red Hat 7.1 il path differisce leggermente: # /etc/init.d/httpd status httpd (pid ) is running... L'output conseguente dovrebbe confortarci sul fatto che Apache sia regolarmente in esecuzione. Il messaggio esatto dipende da come è stato scritto questo script, che invito ad andare a vedere.

39 39 Installazione di Apache(Linux) Si possono utilizzare i pacchetti rpm, installabili su RedHat, Suse e Mandrake: come saprete, questi pacchetti sono pronti all'uso, quindi basterà semplicemente installarli con il semplice comando rpm -i Apache-xx.rpm. Le due x sono la versione di Apache: potete scegliere quella che volete, a patto che sia abbastanza recente. Fatto questo, Apache sarà installato ma non è ancora tutto: da un terminale scrivete setup e vi apparirà una schermata che vi permetterà di impostare alcune configurazioni del sistema; andate nella parte relativa ai demoni e verificate che il demone httpd sia avviato al boot del sistema: senza di questo Apache non andrà mai in esecuzione. Una volta che vi siete assicurati che sia tutto a posto, lanciate il browser e inserite come indirizzo localhost: quella che vedrete è la schermata di 'benvenuto' di Apache: se la vedete (cosa assai probabile, se avete fatto quanto sopra descritto), vuol dire che Apache è regolarmente in esecuzione sul sistema. Per la configurazione dello stesso,, ricordate che con RedHat è distribuito anche un piccolo tool di configurazione, chiamato Comanche.

40 40 Completamento dellinstallazione Come ultimo vediamo i tgz, ovvero i sorgenti: qui il lavoro sarà leggermente più difficoltoso, ma non impossibile: bisognerà infatti compilare tutto a mano. Vediamo innanzitutto dove procurarsi i sorgenti: al sito si trova tutto quello che stiamo cercando, compresi i vari porting per sistemi diversi. Quindi cerchiamo quelli per Linux e scarichiamoli sul nostro HD. Una volta che il download è terminato, spostiamo il grosso archivio in una directory a piacimento: qui si supporrà che tale directory sia /usr/local. Lanciamo poi $ gunzip Apache-xx.tar.gz e successivamente $ tar xvf Apache-xx.tar A questo punto sarà comparsa la directory Apache-xx, ed è in questa directory che si dovrà lavorare. Quindi diamo un bel $ cd Apache-xx e leggiamoci per bene i file README ed INSTALL

41 41 Installazione di Apache intanto dobbiamo assicurarci di alcune cose: dobbiamo avere circa 12 Mb di spazio temporaneo su disco e 3 Mb necessari all'installazione; serve poi il compilatore, che presumibilmente avrete già installato: è vivamente consigliato GCC o superiore. Vengono poi citati come opzionali l'interprete perl5 (che comunque dovrete avere, altrimenti i CGI saranno impossibili da eseguire) ed il supporto DSO (Dynamic Shared Object, che in due parole servono per alcune chiamate di sistema per il caricamento dei moduli); lanciamo lo script./configure, per preparare la compilazione dei sorgenti; tale script accetta varie opzioni: --prefix=PREFIXE' la directory nella quale volete installare Apache (ovviamente PREFIX dovrà essere cambiato con il nome della directory): consigliata /usr/local --add- module=FILEServe per copiare il sorgente di un modulo nell'albero dei sorgenti di Apache; ovviamente al posto di FILE dovrete inserire il path per il sorgente del modulo--activate- module=FILEAggiunge al volo un'entry per un modulo al file di configurazione di Apache-- enable-module=NAMEServe per fare in modo di abilitare (o disabilitare, utilizzando --disable- module) un modulo particolare--with-perl=FILEServe per impostare l'interprete perl utilizzato da Apache (anche se di solito Apache cerca da solo l'interprete) Ovviamente la opzioni da passare a./configure non sono tutte qui: si è pensato di presentarvi solamente le più utili (soprattutto al nostro scopo). Per conoscere tutte le opzioni, lanciate './configure --help' Iniziamo la compilazione lanciando 'make'. Sui computer moderni non ci vorrà molto, ma dovete ad ogni modo attendere qualche minuto prima che l'operazione termini; Ora installiamo il tutto: lanciamo 'make install' e lasciamo che il tutto si concluda. A questo punto Apache è installato ma non ancora attivo: lanciamo 'PREFIX/sbin/apachectl start' e dovremmo poter richiedere ad Apache il primo URL, che sarà Se volete fermare Apache, lanciate 'PREFIX/sbin/apachectl stop'.

42 42 Configurazione di Apache il file principale è /etc/apache/httpd.conf, ma voi potrete averlo da qualche altra parte, soprattutto se siete partiti dai sorgenti. In ogni caso, fate una ricerca e rintracciate tale file. Vediamo com'è strutturato tale file: intanto, ogni voce è ampiamente commentata, così da farvi capire cosa state facendo e a cosa serve quello che state facendo. Ovviamente, un minimo di conoscenza del linguaggio tecnico è necessaria per poter configurare al meglio. Le voci più significative sono: ServerTypeImpostatelo su 'standalone', dovrebbe bastare.PortDefault è 80, non conviene cambiarla HostnameLookupsLogga i nomi dei client (on) o solamente il loro numero IP (off); lasciatelo pure su offServerAdminE' abbastanza inutile su un server locale, ma se volete impostate il vostro indirizzo così, per ogni errore, potrete vantarvi di essere visto da Apache come l'amministratore.ServerRoot La directory dove Apache conserva i log, gli errori e i file di configurazione; solitamente è la directory dove è presente il file httpd.confLoadModuleImportante: indica ad Apache quali moduli caricare; se volete andare veramente sul sicuro, caricateli tutti (anche se l'avvio di Apache sarà più lento, ma si parla solo di qulche secondo). Indispensabili ai nostri scopi sono tutti i moduli per i CGI, per il Perl e i mimeErrorLogIl file dove Apache scrive gli errori. /var/log/apache/error.log può andare benissimo.ServerNameIl nome del vostro server. Se non l'avete mai impostato, sarà localhost.localdomain ma, siccome è assai scomodo, lanciate (da root) hostname e cambiate il nome al vostro host Un altro importante file è srm.conf, che dovrebbe essere nella stessa directory di httpd.conf. Vediamolo più da vicino: DocumentRootLa directory nella quale mettere i file html per la pagina locale. Solitamente /var/www : quindi se in tale directory mettete un vostro index.html, indicando 'localhost' come indirizzo del browser, vedrete proprio questa pagina. E da questa partiranno le altre pagineDirectoryIndexIl nome della pagina che verrà visualizzata come indice; solitamente index.htmlScriptAliasEd eccoci arrivati ai CGI: conviene impostare tale voce come : ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/. Cosa significa? semplicemente, che voi potrete inserire i vostri CGI in /usr/lib/cgi-bin/, ma questi saranno chiamati tramite bin/nome_cgi.cg

43 43 Se un server di rete fornisce servizi in rete, il modo migliore per verificarne il funzionamento è provare direttamente questi servizi. Apriamo allora il nostro browser WEB preferito e puntiamolo sull'URL Il bravo sistemista/hacker usa Telnet come browser WEB:http://localhost # telnet localhost 80 Trying Connected to localhost.localdomain. Escape character is '^]'. GET / HTTP/1.0 qui premi ENTER due volte HTTP/ OK Date: Mon, 10 Dec :50:38 GMT Server: Apache/ (Unix) (Red-Hat/Linux) Last-Modified: Sat, 11 Aug :58:38 GMT ETag: " e-3b758e6e" Accept-Ranges: bytes Content-Length: 526 Connection: close Content-Type: text/html la pagina HTML che non ci interessa Connection closed by foreign host. # Come al solito, solo il comando evidenziato in grassetto deve essere impartito a tastiera, il resto sono le risposte del sistema. Notiamo che il comando GET deve essere scritto proprio in lettere maiuscole, e che occorre premere due volte il tasto ENTER prima che il server risponda: la riga vuota è il modo in cui il client (cioè il nostro Telnet) spiega al server che ha concluso la sua domanda. Infatti, vedremo che il client ha la possibilità di specificare vari altri parametri su altrettante righe. Come è facile immaginare, il comando GET serve per richiedere un documento; a seguire bisogna specificare la parte di path file dell'URL del documento, essendo per convenzione / la richiesta della home page, o pagina default, o pagina indice del sito. Con lungimiranza, il protocollo HTTP richiede anche di specificare esplicitamente il protocollo e la versione.

44 44 Apache:evoluzioni Oltre alle normali funzionalità di un server web, Apache mette a disposizione una serie di strumenti aggiuntivi, quali sistemi di controllo d'accesso a più livelli, generazione di statistiche variamente strutturate, possibilità di "integrare" l'HTML in modo dinamico (Server-Side Include). Di più, la sua caratteristica struttura modulare e la disponibilità di vere e proprie librerie di funzioni richiamabili da altri programmi (Apache API) permettono di integrare Apache con applicativi ausiliari di vario genere (alcuni dei quali sono "di serie", esempio il Proxy server): uno dei più interessanti è PHP, un linguaggio di programmazione (anch'esso fornito gratuitamente tramite il sito web php.iquest.net) che permette, tra l'altro, di integrare facilmente HTML ed SQL, il linguaggio per l'interrogazione di sistemi database quali Oracle. php.iquest.net

45 45 Vantaggi e svantaggi di Apache L'elevata efficienza di questo web server permette di ottenere buone prestazioni anche da macchine meno recenti: anche un 486 può essere "riciclato" come web server, senza contare che la disponibilità dei sorgenti C permette di adattare alle proprie esigenze le funzionalità del server. Per contro, installare e configurare Apache non è un compito semplice, specie se si intende sfruttarne appieno le funzionalità: Apache infatti non prevede, al momento, nè strumenti di installazione automatizzati, nè un sistema interattivo per la gestione delle sue funzionalità; tutto deve avvenire tramite la modifica manuale di opportuni file di configurazione in formato testo. Peraltro, per attivare determinate funzionalità (ad esempio, il supporto PHP) è necessario ricompilare Apache partendo dai sorgenti C: piuttosto scomodo ed assai lontano, ad esempio, dalla "filosofia Plug and Play" che caratterizza l'ambiente Windows. Tuttavia Apache si è meritato nel corso del tempo, la fiducia di gran parte dei Web Server Administrators soprattutto grazie ad avanzate funzioni che permettono di rendere sicuro ed efficiente il commercio elettronico.

46 46 Funzionalità di Apache Content Negotiation: è un algoritmo per la scelta del file più appropriato da restituire ad una richiesta del navigatore e tiene conto della configurazione e delle capacità del browser remoto. Esempio: Il browser accetta imagini jpg, gif, png, animazioni flash. Il server, per quella richiesta, ha a disposizione immagini gif-animato, jpg, animazioni director. Se il web-designer ha fatto bene i calcoli, il browser dovrebbe restituire un gif- animato. - Language Negotiation: implementata prima del content negotiation, questa funzionalità permette di selezionare la lingua del documento in base alla configurazione del browser- utente. Sta alla flessibilità di chi sviluppa il sito fare in modo che il sistema di negoziazione non risulti troppo rigido. - Aliasing & Redirect: Apache permette di dare dei nomi mnemonici alle proprie risorse in modo da essere facilmente raggiungibili e implementa anche delle redirezioni multiple tramite la riscrittura dell'url. Esempio: possiamo sostituire "/~user" con "/u/user" e permettere di ignorare la presenza dell'ultimo slash in /u/user. - Virtual Host Support & Directory Name Interpolation: utile per gli ISP per ospitare siti diversi sullo stesso server, ma fornisce anche un sistema più rapido per la gestione di "sezioni" di un sito e-Commerce. - Cookies: variabili impostate dal server sul client per gestire il customer-tracking o la gestione di una "sessione". - Message passing (GET, POST), eCookis: Consente all'utente di eseguire una serie di operazioni collegate l'una all'altra: prenotazioni e pagamenti online, accesso ad account, dischi e database remoti (per consultare la propria mailbox, per controllare il proprio carrello della spesa, il proprio conto telefonico, per approfondire una ricerca in un motore). Vengono utilizzati i metodi GET (sessionID visibile nell'url) e POST (campi nascosti nel form), ma soprattutto i Cookies (righe di testo nel proprio hard disk modificabili dal server e cancellabili dal browser).

47 47 Definizione di Proxy Proxy: Nodo di Internet (o di una LAN ecc..) compreso di software di gestione che si interpone fra l'host dell'utente e il resto della rete. PROXY SERVER: si intende una macchina che appena riceve una richiesta tipo URL cerca il file nella sua cache locale. Se trova il documento associato a quell'URL lo invia al browser che lo ha richiesto immediatamente altrimenti lo preleva dal sito associato a quell'URL. Questo processo permette un risparmio di tempo e di traffico in Internet. Il server comunque mantiene nella cache i documenti secondo un criterio basato sulla loro data, grandezza e numero di accessi. Il proxy server e' utile per memorizzare su una cache tutti i file raccolti p.e. durante le navigazione in Web, per cui permette di rivisitare siti gia' visti senza dover effettuare una nuova connessione con il sito remoto. *Facendo un esempio nell'hard disk di alcuni provider sono raccolte tutte le ultime pagine lette degli abbonati. ARP: in una rete locale il proxy server puo' definire quali macchine di una LAN possono accedere ad Internet e quali no. In questo caso il server che gestisce la sua LAN risponde ad una richiesta fatta da un host secondo il protocollo ARP e controlla la sua identita'. Se l'host richiedente ha i permessi per entrare in Interent la richiesta verra accettata e sara' permesso l'accesso all'indirizzo scelto, altrimenti la richiesta verra rifiutata. Maschera le generalita' del sistema richiedente poiche' i dati in uscita partono dal proxy.

48 48 Vantaggi dei proxy Per quanto riguarda l'utilizzazione dei proxy servers occorre ricordare che molto spesso piu' Client WWW appartenenti ad uno stesso dominio o situati in una ristretta area geografica richiedono contemporaneamente le stesse pagine HTML ad un importante WWW Server situato in un'altra zona della terra. Cio' implica che quel WWW Server debba trasferire la stessa pagina tante volte quante sono le richieste dei Client, provocando cosi' un'enorme spreco di larghezza di banda e rallentando notevolmente il trasferimento dati. Per ovviare a questo problema sono stati creati i Proxy Server che sono dei software che mantengono copie locali delle pagine Web piu' richieste. Il proxy si può identificare come l'insieme di un calcolatore e di un software particolare detto "proxy server", a cui ci si appoggia per velocizzare i collegamenti ai siti su Internet. Se si configura un browser perché utilizzi un proxy, tutte le richieste di pagine Web fatte da quel client non arriveranno direttamente ai servers remoti ma saranno rivolte al proxy server, il quale a sua volta può rispondere direttamente al client oppure contattare i server remoti per farsi spedire i documenti richiesti che poi inoltrerà al computer dellutente. A prima vista questo meccanismo non sembra offrire nessun vantaggio, in realtà può migliorare in modo sostanziale il tempo di risposta per pagine accedute frequentemente, riducendo così anche il traffico sulla rete. Infatti un proxy copia sul proprio Hard Disk tutti gli oggetti recuperati negli ultimi tempi; se un utente richiede una pagina Web già consultata da un altro utente in precedenza, il proxy evita il collegamento geografico, spesso lento, col sito remoto e

49 49 Vantaggi del proxy Il server proxy è da considerarsi come un step intermedio fra il client ed il server remoto, quando viene utilizzato non si ha il passaggio diretto delle informazioni fra server e client ma è il proxy a gestire la comunicazione fra i due. Gli obiettivi che si vogliono perseguire con la funzionalità del proxy sono: - Caching, ovvero le informazioni richieste del client vengono messe in una cache del proxy e restituite in un secondo momento se le stesse informazioni vengono richieste, senza scaricare di nuovo i dati dal server remoto. Quindi si ha il vantaggio di aumentare la velocità e ridurre la quantità di banda utilizzata. - Sicurezza. Client e server sono logicamente isolati, quindi il proxy può fungere anche come barriera per il traffico indesiderato. La funzionalità principale di un proxy è quella di effettuare relay e caching delle richieste provenienti dai vari client in entrambe le direzioni ovvero FORWARD e REVERSE. Per FORWARD proxy si intende quel proxy che fa da relay per un client della LAN interna ed esegue il caching delle pagine richieste, limitando così la banda uscente ed aumentando la velocità di trasferimento. Per REVERSE proxy si intende quel proxy che esegue il relay di un client esterno verso un server interno, riducendo cosi il carico sul server, soprattutto quando deve generare pagine dinamiche.

50 50 Linux/squid Permette di definire delle politiche di navigazione su Internet e di verificare che vengano rispettate. Linux insieme a Squid realizza questo servizio in maniera sicura ed efficace. Un tipico esempio di politica di navigazione su Internet è: Tutti gli utenti hanno libero accesso ai siti istituzionali (es. ministero delle finanze, fornitori, corrieri espressi, motori di ricerca). Da alcune postazioni specifiche si può navigare senza restrizioni. Da tutti gli altri PC dell'azienda bisogna inserire una login e una password valide per navigare.

51 51 Proxy server Lo scopo del server è quello di ridurre il traffico in Internet e quello di velocizzare la navigazione da parte degli utenti che vi si collegano. Ogni volta che un browser visualizza una pagina da Internet la scarica sul computer dell'utente salvandola in un'area di disco chiamata cache. Nel caso venga rivisualizzata di nuovo la stessa pagina, il browser (a meno che non sia settato dall'utente nella modalità, peraltro sconsigliabile, di "verificare il documento ogni volta") non accede nuovamente ad Internet, ma propone la pagina che aveva precedentemente memorizzato. Le dimensioni della cache all'interno di un pc sono generalmente contenute entro pochi megabyte. Un Proxy server, in prima approssimazione, altro non è che una cache molto più grande di quella normalmente presente sui pc (al momento sfrutta un disco da 4 gigabyte). Oltre alla dimensione maggiore la caratteristica vincente di questo servizio è quella di essere comune a tutta la scuola. In questo modo se alle 8.30 del mattino un utente scarica la pagina tale pagina sarà subito disponibile per qualsiasi utente senza che il suo browser vada effettivamente a cercare tale pagina sul sito della Microsoft. Per usare il Proxy server è necessario configurare i propri browser.

52 52 Server Proxy Windows Un server proxy è un computer della LAN che consente di stabilire connessioni a Internet senza rischi per la protezione della rete interna. Per informazioni sulla modalità di connessione della LAN a Internet, contattare l'amministratore del sistema. Se la rete locale Lan utilizza un server proxy per la connessione a Internet, fare clic su Sì e quindi su Avanti. Se si sceglie questa opzione, è necessario specificare le seguenti informazioni: I nomi e le porte dei server proxy utilizzati dalla LAN per la connessione a Internet. Gli indirizzi Internet ai quali si desidera connettersi senza utilizzare un server proxy. È ad esempio possibile che non si desideri utilizzare un server proxy per contattare altri computer della stessa LAN

53 53 Configurare Proxy Internet Eplorer 5.x 1) Strumenti 2) Opzioni Internet 3) Connessioni 4) Impostazioni LAN 5) Spuntare il campo Utilizza script di configurazione automatica 6) Inserire nel campo Indirizzo oppure 1) Strumenti 2) Opzioni Internet 3) Connessioni 4) Impostazioni LAN 5) Spuntare il campo Utilizza un server proxy 6) Inserire nel campo Indirizzo proxy.cce.unipr.it ed in quello Porta il valore 80

54 54 Cose un Proxy Procura, messo, persona mandata al posto del titolare e che rappresenta lo stesso Server proxy memorizza le ultime pagine visitate dagli utenti per cui, se un utente vuole collegarsi a una pagina da poco visitata da qualcun altro, essa può essere scaricata dal server proxy invece che dal sito remoto, aumentando così la velocità di risposta e ottimizzando lutilizzo della rete. (caching)

55 55

56 56

57 57

58 58 Cose un Proxy nelle reti locali protette i proxy sono utilizzati soprattutto come gateway in modo tale che una sola macchina possa accedere all'esterno e tutti gli altri calcolatori possano ottenere i dati dall'esterno della rete, appoggiandosi ad essa.

59 59 Il proxy open source Squid Proxy pensato principalmente per il web Uno dei piu diffusi su Internet soprattutto per quanto riguarda gli ISP e i backbones Implementato, con qualche modifica, in molti net- cache, firewalls e network appliances (ad es.: Sun- Cobalt CacheRaq 4) (http://www.squid-cache.org/products.html) Lavora bene sui grandi numeri

60 60 Squid Software Free Open Source proxying and caching of HTTP, FTP, and other URL's proxying for SSL cache hierarchies ICP, HTCP, CARP, Cache Digests transparent caching extensive access controls HTTP server acceleration SNMP caching of DNS lookups

61 61 Proxy only Soluzione gateway per reti protette Ho banda a sufficienza, ma voglio proteggere i client e lintranet Voglio che i miei dipendenti possano fare ricerche in Internet ( come strumento di lavoro, aumentando il loro know-how)

62 62 Proxy only Come: Isolo lintranet sul router facendo passare solo lIP del proxy Posso impedire laccesso ad alcuni siti che distraggono i miei dipendenti

63 63 proxying and caching of HTTP, FTP, and other URL's Host da contattare Proxy del Provider Client (Browser) Internet

64 64 proxying and caching of HTTP, FTP, and other URL's Internet Proxy del Provider Client (Browser) Computer locale Provider Internet (il resto) RAM Dischi RAM

65 65 Cache Hierarchies In una grossa organizzazione con unintranet veloce ed un collo di bottiglia verso Internet In un grande ISP

66 66 Esempio Hierarchy GARR Proxy Parent sui nodi principali Proxy Sibling sui nodi secondari

67 67 HTTP accelerator configurazione 1 Ho un sito web lento o affollato che richiede risorse hardware ingenti I contenuti del sito non si aggiornano molto velocemente in rapporto alla frequenza delle connessioni

68 68 Http Accelerator 1 (http 1.0 safe) Squid http accelerator ( httpd_accel_single_host ) Client (Browser) DNS pubblico Internet Web Server

69 69 HTTP accelerator configurazione 2 Ho piu di un sito web su una sottorete nascosta oppure Devo bilanciare il carico fra piu server con applicazioni piuttosto pesanti

70 © 2001 Daniele AlbrizioSquid nella rete aziendale Configurazioni e soluzioni Transparent proxying and caching applicabilità Realtà client eterogenee e unmanaged Grossi backbones Configurazioni particolari della rete e politiche aziendali che lo richiedano

71 © 2001 Daniele AlbrizioSquid nella rete aziendale Configurazioni e soluzioni Da tenere bene in mente Le pagine che si vanno a mettere in cache dovrebbero riportare informazioni corrette riguardo alla scadenza, validita e cachabilita del loro contenuto ( IETF draft on Known HTTP Proxy/Caching Problems )

72 72 SQUID Configurazione /sbin/chkconfig squid on /etc/rc.d/init.d/squid on Aggiungere in /etc/squid/squid.confhttp_port 3128 Attivare automaticamente /sbin/chkconfig squid on

73 73 Configurazione del web server E consigliato mantenere il server web in ascolto su di una porta differente dalla "classica" 80. Ovviamente, se poi si decide di installare web e proxy sulla stessa macchina, la scelta è quasi forzata (quasi, visto che si potrebbe comunque mantenere Squid in ascolto sulla porta 8080, e utilizzare iptables per redirigere su di esso tutto il traffico verso la porta 80, proveniente dalla interfaccia esterna. Ma oltre ad essere una soluzione macchinosa, è meno sicura). Sempre nel caso si installi tutto sullo stesso server, è consigliabile abilitare il servizio http solo sull'interfaccia di loopback. Se il server web è Microsoft IIS, si può impostare la porta da utilizzare tramite la finestra "Proprietà". Nel caso invece che il server web sia Apache, il parametro per settare la porta in ascolto sulla 81 è: Listen 81 #Listen :81 in caso sia tutto sulla stessa macchina

74 74 COOKIE I cookie, originariamente inventati dalla Netscape e successivamente standardizzati con la RFC2109, sono un artificio per riuscire a gestire lo stato nelle transazioni web. Quando un browser chiede ad un web server una risorsa (una pagina, una immagine o altro), la risposta del web server è sempre costituita da alcune righe di header con informazioni varie, una riga vuota e, se il caso, i veri e propri dati richiesti. Tra le righe di header, il web server può anche inserirne una simile a questa:RFC2109 Set-Cookie: stringa-di-caratteri; path=/; expires FRI, 09-Dec-96 13:46:00 GMT Se il cookie viene accettato, il browser lo memorizza sul disco fisso e, da quel momento, ogni volta che avrà occasione di inviare richieste al medesimo server gli passerà una riga di header del tipo Cookie: stringa-di-caratteri I cookie permettono quindi ai siti web di riconoscere i visitatori che ritornano dopo tempo: è un meccanismo simile all'attaccare un badge alla giacca dei visitatori. In molti casi i cookie non sono usati in modo da essere una minaccia diretta alla privacy dell'utente web, anzi, possono talvolta perfino consentire alcune funzioni utili. Spesso però pongono l'utente in una situazione in cui la privacy può essere più facilmente compromessa (il rischio è che il medesimo browser risulti individuabile nel tempo, consentendo così di correlare tra loro più informazioni di quante l'utente potrebbe desiderare). Anche in considerazione del fatto che esistono compagnie che usano i cookie senza troppi scrupoli, molti preferiscono tenerli disabilitati.

75 75 Glossario l'Unicode è una sorta di codifica (simile a quella ASCII) utilizzata per ovviare al fatto che esistono differenti alfabeti. I web server, primo fra tutti IIS, interpretano i codici Unicode, e li trasformano nell'equivalente simbolo del character set di appartenenza.


Scaricare ppt "1 Mod.8 Servizi Web di base World Wide Web:definizioni e componenti http Scripting server side Scripting client side WebServer:APACHE Proxy Server :Squid."

Presentazioni simili


Annunci Google