Un consorzio di gestori di lidi balneari mette a disposizione dei propri associati un servizio
in cloud attraverso il quale gli utenti finali possono, attraverso un portale WEB ed una
semplice registrazione, accedere, tramite un link, alle videocamere di ciascun stabilimento
balneare ubicate sull'arenile per controllarne le condizioni meteo e possono inoltre inviare
una richiesta di prenotazione allo stabilimento balneare prescelto a cui risponderà tramite
mail lo stabilimento interessato. Ogni stabilimento sarà dotato di rete privata
comprendente postazioni fisse (amministrazione, casse, ecc...), access point wireless per
l'accesso ad internet dei clienti, telecamere IP wireless di videosorveglianza puntate sui
punti nevralgici della struttura (casse, ingressi, ecc..) ed altre telecamere IP wireless ubicate
sull'arenile per controllarne le condizioni meteo. Fatte le opportune ipotesi preliminari:
Si crea la rete privata per gli stabilimenti facenti parte del consorzio “Stella Marina del Salento”. Se ne
realizzerà una singola rete e gli stabilimenti seguiranno la stessa topologia logica e fisica. Vengono quindi
formulate le seguenti ipotesi preliminari:
I collegamenti via cavo sono realizzati mediante cavo UDP di categoria 5. Il collegamento tra il router e
Internet è realizzato in fibra ottica FTTH. Le connessioni tra i dispositivi e lo switch sono connessioni Fast
Ethernet a 100 Mbps mentre le connessioni tra gli switch e il router sono connessioni Gigabit Ethernet a
1Gbit/s; anche la connessione ad Internet sarà ad 1Gbit/s. Gli switch utilizzati sono tutti switch a 4 porte,
fatta eccezione per la rete amministrativa che utilizza uno switch a 8 porte. Il router è a 8 porte. La banda
utilizzata dalle reti wireless è di 2,4 GHz.
Per quanto riguarda l’indirizzamento, si decide di non minimizzare gli indirizzi. Per le reti wireless di
dipendenti e clienti, si decide di realizzare un indirizzamento dinamico mentre, per la sola rete cablata
amministrativa e per le reti delle telecamere, si realizza un indirizzamento statico. Si realizza quindi il
seguente piano di indirizzamento:
Va notato come, per i server DHCP e la base di dati, venga assegnato un indirizzo statico. Tutti i server
devono possedere un indirizzo statico perché devono essere sempre disponibili ed è più facile riconoscere il
dispositivo all’interno della rete privata e in Internet. Si tenga in considerazione, però, che i server degli
stabilimenti non verranno mai chiamati in causa da Internet. L’interfaccia che si collega con Internet ha un
indirizzo pubblico a differenza delle reti interne che posseggono indirizzi privati. Ogni dispositivo infatti,
possiede un indirizzo privato che il router non può inoltrare nella rete. Viene affidato al protocollo NAT il
compito di tradurre gli indirizzi privati in indirizzi pubblici. Il NAT ha la funzione di offrire ad ogni host la
possibilità di accedere ad ogni indirizzo di Internet utilizzando un numero limitato di indirizzi pubblici.
L’accesso dei dipendenti alla rete wireless avverrà attraverso il filtraggio del MAC, mentre l’accesso per i
clienti alla rete wireless avverrà tramite server radius alla quale verrà inviata l’iscrizione alla conferma della
prenotazione e che saranno valide solo per la data e per l’ora della prenotazione. Le telecamere si collegano
alle reti wireless tramite il filtraggio del MAC.
Quando si entra nel portale, si è davanti ad una schermata che chiede all’utente di effettuare il login o la
registrazione al portale. Una volta confermata la registrazione o l’accesso, il cliente si troverà una schermata
nella quale compaiono tutti i lidi. In questa schermata, l’utente può effettuare la ricerca di un lido per nome o
per città. Come risultato della ricerca, compariranno il nome del lido, la città, il link per accedere alle
videocamere, un pulsante che mostrerà un’immagine dello stabilimento e uno che gli permetterà di effettuare
la registrazione. La registrazione verrà inviata via e-mail compilando un form nella quale, oltre i dati
anagrafici, il cliente inserirà il numero di persone, di ombrelloni, di sdraio e/o lettini, la data e l’ora e il
servizio prescelto. Oltre che la prenotazione di ombrelloni possono essere anche prenotati gli eventi che il
lido organizza. Gli eventi sono a ingresso limitato con limite che viene posto dal lido. Per gli eventi mattutini
bisogna avere un ombrellone prenotato e quindi si potrà avere anche l’accesso alla rete wireless mentre per
gli eventi serali si può pure non essere utenti del lido per effettuare la prenotazione ma non si avrà l’accesso
alla rete wireless.
Effettuata la prenotazione, la mail arriverà allo stabilimento nella quale, un operatore addetto, può decidere
se confermare o rifiutare la prenotazione. L’esito della prenotazione viene inviato via e-mail al cliente
sempre tramite la compilazione di un form e l’aggiunta di un eventuale messaggio da parte dell’operatore. Lo
stabilimento potrà aggiungere gli eventi e i servizi offerti e richiedere le prenotazioni per uno specifico
giorno.
L’accesso alle telecamere avviene tramite il protocollo Real Time Streaming Protocol che utilizza come
porta di comunicazione la porta 554. Il protocollo serve per stabilire e gestire le connessioni streaming
client/server. I client inviano al server multimediale comandi per controllare in tempo reale la riproduzione.
La trasmissione, in realtà, non viene definita dal protocollo (anche se alcuni produttori preferiscono
implementare protocolli di trasporto brevettati) ma solo la distribuzione dei flussi multimediali.
Bisogna adesso capire adesso come proteggere le informazioni, le risorse più importanti di ogni
organizzazione. Il primo modo per proteggere i dati, sta nel creare delle Access Control List per monitorare il
traffico in ingresso e in uscita dal router dello stabilimento. Le ACL sono delle liste in cui sono gestiti i filtri
da applicare ad ogni pacchetto (firewall di tipo packet filtering router). Per configurare le ACL sul router
dello stabilimento si decide di utilizzare una closed security policy nella quale tutto è vietato e vengono
elencati solo i permessi. Si deve consentire il traffico dalla rete amministrativa verso Internet, verso la rete
dei dipendenti e verso la rete delle telecamere di sicurezza; la rete dei dipendenti può comunicare solo con
Internet e la rete amministrativa; la rete dei clienti può comunicare solo con Internet; alle telecamere si potrà
accedere solo tramite il portale per controllare il meteo; la base dati comunicherà solo con la rete
amministrativa. Si realizza quindi la seguente ACL:
IP IP
Azione IN/OUT IP router Porta WM Porta WM
mittente destinatario
X,Y.0.25
PERMIT IN X.Y.0.0 ANY 0.0.0.255 X.Y.1.0 ANY 0.0.0.255
4
X.Y.0.25
PERMIT IN X.Y.0.0 ANY 0.0.0.255 X.Y.4.0 554 0.0.0.255
4
X.Y.0.25
PERMIT IN X.Y.0.0 ANY 0.0.0.255 X.Y.5.0 ANY 0.0.0.255
4
PERMIT OUT 8.36.0.25 X.Y.0.0 443 0.0.0.255 ANY ANY 0.0.0.0
X.Y.1.25
PERMIT IN X.Y.1.0 ANY 0.0.0.255 X.Y.1.0 ANY 0.0.0.255
4
PERMIT OUT 8.36.0.25 X.Y.1.0 443 0.0.0.255 ANY ANY 0.0.0.255
PERMIT OUT 8.36.0.25 X.Y.2.0 554 0.0.0.255 ANY ANY 0.0.0.0
PERMIT OUT 8.36.0.25 X.Y.3.0 443 0.0.0.255 ANY ANY 0.0.0.0
X.Y.4.25
PERMIT IN X.Y.4.0 554 0.0.0.255 X.Y.0.0 ANY 0.0.0.255
4
X.Y.5.25
PERMIT IN X.Y.5.0 ANY 0.0.0.255 X.Y.0.0 ANY 0.0.0.255
4
DENY IN/OUT ANY ANY ANY 0.0.0.0 ANY ANY 0.0.0.0
Il packet filtering router è un particolare tipo di firewall (componenti di rete che servono ad evitare accessi
indesiderati) che analizzano le intestazioni di livello 3 e di livello 4 e decide se accettare o meno il pacchetto
attraverso le filosofie della closed security policy e della open security policy che sono tra di loro opposte.
Per evitare accessi indesiderati nelle reti wireless, come detto in precedenza, viene utilizzato il filtraggio del
MAC per tutte le reti ad eccezione della rete dei clienti nella quale l’identificazione avviene tramite il server
radius che chiede le credenziali di accesso. Si ricorda che le credenziali saranno valide solo per la data e per
l’orario che viene richiesto in fase di registrazione.
Per la sicurezza nella trasmissione dei dati in rete si utilizza il protocollo HTTPS che si ottiene combinando
il protocollo HTTP con SSL/TLS.
Un’ulteriore protezione ai dati viene attuata tramite la previsione delle SQL Injection che consistono
nell’aggiunta di codice SQL nell’input che l’utente fornisce nel browser tramite un form HTML. Per evitare
che qualsiasi hacker possa intrufolarsi nel portale e crei danni alle informazioni o cancelli definitivamente le
prenotazioni.
Sempre lato codice, per proteggere l’accesso alle pagine particolari del portale che manipolano i dati, alla
quale si può accedere solo dopo aver effettuato il login o alla quale possono accedere solo specifici utenti, si
inseriscono le sessioni PHP che permettono di memorizzare i dati sul server e che identificano l’utente in
ogni pagina del portale.
Sempre sotto l’aspetto della sicurezza, il consorzio impone ai lidi di nominare, prima dell’inizio della
stagione balneare che apre il 1 aprile, di nominare tutti i componenti che faranno parte del servizio di
prevenzione e protezione dai rischi e di effettuare la valutazione dei rischi in tutti i locali e luoghi dello
stabilimento e di convocare delle riunioni periodiche per problematiche sulla sicurezza e sull’avanzamento
dei lavori di sicurezza.
Si realizza ora la porzione di database necessaria per la gestione delle prenotazioni. La base dati utilizzata nel
progetto sarà una base dati di tipo relazionale. La stagione balneare apre il 1 aprile e chiude il 31 settembre
per tutti gli stabilimenti facenti parte del consorzio. Per gli utenti si conosce il nome e il cognome, la data di
nascita, il codice fiscale, l’indirizzo e-mail e il sesso; non si memorizzeranno username e password perché
questi dati riguardano il portale e non il lido. I servizi offerti dai lidi sono servizi di ristorazione, ombrelloni,
sdraio e/o lettini e cabine mentre per le attività si vuole sapere se sono mattutini o serali e quindi anche la
data e l’ora e il numero massimo di partecipanti. Come si è detto in precedenza, alle attività mattutine
possono partecipare solo coloro che hanno prenotato un ombrellone o un servizio, mentre alle attività serali
possono partecipare pure i non clienti del lido. Quando si effettua una prenotazione per un servizio, possono
essere prenotate pure più date richiedendo un abbonamento. Gli abbonamenti possono essere di diversa
durata (settimanale, mensile o stagionale). Se viene richiesto un abbonamento, in fase di prenotazione si può
non inserire l’orario. Quindi si crea il seguente modello relazionale tramite l’utilizzo del diagramma E/R
(entità/associazione):
Da quanto detto sopra, si crea l’entità CLIENTE che ha come identificatore univoco il campo codice_fiscale
e come attributi il campo nome, cognome, e-mail, data_nascita e sesso. Il campo sesso è un campo
caratterale che sarà M in caso di sesso maschile ed F in caso di sesso femminile.
L’entità SERVIZIO è composta da un solo campo: il campo id_servizio (che sarà l’identificatore univoco
dell’entità). Per individuare i vari tipi di servizi offerti dallo stabilimento si crea un’associazione IS-A avente
come entità padre SERVIZIO e come entità figlie OMBRELLONE, CABINA e RISTORAZIONE
Tra l’entità SERVIZIO e l’entità CLIENTE si crea un’associazione M-M obbligatoria PRENOTARE dato
che un cliente può prenotare molti servizi e un servizio può essere prenotato da più clienti. L’associazione
possiede degli attributi: data_inizio, data_fine, ora_inizio e ora_fine, n_ombrellone (che non indica il numero
di ombrelloni prenotati ma solo il numero di serie dell’ombrellone), num_sdraio (che indica il numero di
sdraio prenotate) e num_lettini (che indica il numero di lettini prenotati), n_cabina che indica il numero di
serie della singola cabina, il campo n_tavolo (che indica il numero di serie del tavolo) e num_p (che indica il
numero di persone per cui viene effettuata la prenotazione). Va specificato che i numeri di serie non sono
inseriti dai clienti ma dall’addetto alle prenotazioni.
. Se la prenotazione riguarda una sola data, data_inizio e data_fine coincideranno, mentre se il cliente decide
di richiedere un abbonamento una riguarderà la data di inizio dell’abbonamento e l’altra (in base al tipo di
abbonamento richiesto) la data di fine. I campi relativi alle ore saranno compilati solo quando il cliente
prenota per uno specifico giorno. I clienti con l’abbonamento hanno il libero accesso ai servizi prenotati
senza vincoli di orario.
L’entità EVENTO è l’entità che indica gli eventi programmati e creati dallo stabilimento. È composta da
sette attributi: il campo id_evento (che avrà la funzione di identificatore univoco per l’entità), il campo data,
il campo ora, il campo nome (che indica l’eventuale denominazione dell’evento), il campo tipo_evento (che
indica la tipologia dell’evento), descrizione (una breve descrizione riguardante l’evento) e n_max che indica
il numero massimo di persone che possono partecipare all’evento. Non c’è un campo prezzo perché in fase di
prenotazione si riceve solo un posto nell’evento, il pagamento e il prezzo sono fissati in cassa nello
stabilimento.
Tra l’entità CLIENTE e l’entità EVENTO si crea un’associazione M-M facoltativa verso il cliente
PARTECIPARE. La facoltatività nell’associazione da parte del cliente sta nel fatto che nella base dati ci
possono essere clienti che non hanno mai partecipato ad alcun evento organizzato dallo stabilimento.
L’associazione non presenta, inoltre, alcun attributo. Si decide di non aggiungere il campo num_p in questa
associazione perché, per gli eventi mattutini verrà preso dal campo num_p in PRENOTAZIONI mentre per
gli eventi serali, ogni singolo cliente partecipante deve effettuare la propria partecipazione e non potrà
prenotare per più utenti.
Dopo aver realizzato e commentato il modello concettuale, si passa alla creazione del modello logico
attraverso le regole di derivazione.
Nel modello logico, le associazioni M-M diventano anche esse delle tabelle con tutti gli attributi posseduti
nel modello concettuale. La tabella PRENOTAZIONI, avrà come identificatore univoco il campo
id_prenotazione, perché la combinazione del codice del cliente e del codice del servizio prenotato non
saranno univoche ma si potranno ripete più volte nella tabella. Inoltre, la tabella ha come chiavi esterne le
chiavi primarie della tabella SERVIZI e della tabella CLIENTI.
La tabella PARTECIPAZIONI ha come identificatore univoco il campo id_prenotazione e come chiavi
esterne le chiavi primarie della tabella CLIENTI e della tabella EVENTI. La combinazione delle due chiavi
esterne potrebbe fungere da identificatore univoco della partecipazione, ma per facilitare il lavoro si è deciso
di crearne uno utilizzando una variabile autoincrement.
Prima di creare le tabelle, bisogna creare il database in cui verranno inserite le tabelle. Il database viene
creato con il seguente comando SQL:
La prima schermata che appare all’utente è una schermata nella quale sceglierà se effettuare l’accesso o
registrarsi nel portale. Quando l’utente effettua l’accesso, i dati presenti nel form passeranno alla pagina
accedi.php nella quale si controlla l’esistenza dell’utente. Se l’utente non esiste, verrà reindirizzato alla
pagina di registrazione, altrimenti si aprirà la pagina nella quale l’utente ricercherà il lido.
Ogni pagina .php contiene il codice sopra descritto che serve a controllare se l’utente è passato per la pagina
di registrazione o di accesso altrimenti reindirizza l’utente ad una pagina di errore che lo inviterà ad eseguire
la registrazione o l’accesso.
Questo codice serve per far eseguire al sito la richiesta al database dell’utente registrato con quell’username
e con quella password. Questo codice viene scritto solo in fase di progettazione, quando si passerà a rendere
attivo il portale su Internet, al posto di localhost va inserito l’indirizzo della base di dati, al posto di root e
delle virgolette successive vanno inserite username e password per differenziare i vari tipi di accesso alla
base di dati. La query viene eseguita dal terzo comando.
Con l’esecuzione di queste istruzioni si passa a controllare l’esistenza dell’utente. Se il numero di tuple
risultanti dall’esecuzione della query è uguale a zero, significa che l’utente non è registrato al portale e
quindi verrà reindirizzato alla pagina di registrazione, altrimenti verrà indirizzato alla pagina
area_riservata.php per ricercare il lido ed effettuare la prenotazione. L’ultima istruzione è la chiusura della
connessione con la base di dati.
La pagina di registrazione si vede in questo modo. Prima di effettuare la registrazione, si controlla l’effettivo
inserimento di tutti i dati e la loro validità tramite dei metodi javascript.
Questo è il codice eseguito quando si effettua la ricerca per denominazione mentre, quando si effettuerà la
ricerca per paese, al posto di denominazione comparirà paese e al posto di $denominazione comparirà
$paese. Se non viene trovato alcun lido, si andrà nella pagina nolido.html che comunicherà l’errore all’utente
e lo inviterà ad effettuare di nuovo la ricerca. Quando la ricerca conterrà almeno un risultato, l’utente verrà
reindirizzato alla pagina visualizza.php nella quale potrà controllare le telecamere o effettuare la
prenotazione. La prenotazione viene effettuata compilando un form e inviando i dati via e-mail al lido e li ci
sarà un addetto che accetterà o meno la prenotazione.
L’invio della prenotazione via e-mail avviene tramite questo codice. Si prendono tutti i dati dal form
compilato dal cliente e verrà inviato tutto al lido. Si noti che questo non è il codice specifico della mail che
invierà il cliente, ma è il formato di codice delle pagine che verranno compilate dal cliente e dall’operatore
per la conferma o il rifiuto dell’operazione