mercoledì 11 marzo 2015

A.S. 2014/15 - Relazione di laboratorio: Backup manager

Materia: Sistemi & Reti
Esercizio: 6 Backup manager
TITOLO: Pagina php per login, backup directory personale e download.


OBIETTIVO: Creare una pagina php, che permetta l’autenticazione tramite username e password per l’accesso alla pagina successiva che provvederà ad eseguire il backup dell’intera directory e il successivo download dello stesso.


ANALISI/PREMESSE TEORICHE
Dopo aver individuato e appreso le linee guida espresse nell’obiettivo, si procede dividendo il progetto nei diversi “step” che aiuteranno lo sviluppo e l’individuazione di nuovi criteri per la realizzazione dell’intero. Cominciando ad analizzare si nota che le principali aree da sviluppare e risolvere sono:

·         AUTENTICAZIONE

·         BACKUP DIRECTORY

·         DOWNLOAD DIRECTORY

Le stesse aree dovranno essere ampliate per permettere al progetto di prendere forma in modo professionale e performante, raggirando e risolvendo problemi di ogni genere, in maniera di consegnare un prodotto finito, certificato.

AUTENTICAZIONE
Sarà possibile effettuare il login alla pagina dedicata in diversi modi.
1)      Mono-utente, tramite costante
·         Costrutto if
2)      Multi-utente, tramite costante
·         Costrutto else if
3)      Utilizzo di un file per la memorizzazione degli accessi (formato txt)
·         database su file di testo (explode),
4)      Utilizzo di un file per la memorizzazione degli accessi (formato xml)

5)      Utilizzo di un database relazionale (MySql)

BACKUP DIRECTORY
Il backup potrà essere eseguito tramite istruzione Linux shell
I file tar sono creati usando le opzioni -c e -f. Il former chiede a tar di creare un archivio e l’ultimo indica che il prossimo argomento sarà il nome del nuovo archivio di file.
 tar –opzione [nome archivio] [nome directory]
Istruzione: tar
Opzioni:  -c, -f

DOWNLOAD DIRECTORY
Il download potrà essere eseguito o da funzione header, con un redirect ad un'altra pagina php che usa come mime type octet-stream o vincolato da bottone con collegamento ipertestuale.
  1. header('Content-Type: application/octet-stream');  
  2. header('Content-Disposition: attachment; filename="file.zip"');   
  3. header('Content-Transfer-Encoding: binary');  
  4. readfile('file.zip');  
  5. ?>  
Il costrutto header() di php consente, di far inviare dal server delle "risposte" (response headers) in relazione ad una determinata pagina Web. Il loro utilizzo deve essere fatto con attenzione in quanto il file non deve generare alcun output prima della loro esecuzione: in tal caso si genera un errore di tipo Warning che recita "Cannot modify header information - headers already sent by...".
Danneggiando il sistema.

Potrà essere eseguito in automatico, dopo l’accesso o vincolato da un bottone.

CAMBIO PERMISSION
Prima di poter eseguire correttamente la pagina bisognerà cambiare le permission relative alla cartella in esame, autorizzando tale cartella ad essere dal web.
Per rendere il lavoro sicuro è necessario cambiare i permessi della cartella riferita all'esecizio con l'utenza root, modificando le permission del group riferite al www-data
Eseguendo il comando come root: chgrp www-data es6 -R            
Successivamente ritornare alle permission standard che escludono others, con il comando sudo chmod o--rwx, il comando può essere eseguito anche da utente non root.

 CREO UN FILE CREDENZIALI
Per completare il progetto e implementare la multi-utenza per l’accesso, creare un file.txt contenente nomeutente:password  separati da un separatore, nel nostro caso i due punti, eseguire quindi la lettura del file e la separazione dei vari caratteri con esplode, in questo modo sarà possibile consentire l’accesso solo agli utenti presenti nel file credenziali.txt, per tutelare gli utenti e non far accedere al file, è prudente cambiare l’estensione dello stesso limitandone la visualizzazione in quanto i file .inc non vengono aperti dal sistema, ma restituiscono una pagina d’errore.

UTILIZZO METODO POST
Per migliorare la sicurezza della pagina, è prudente e renderà l’esercizio più professionale utilizzare il metodo POST invece del metodo GET.
Il metodo POST ci permetterà di non far comparire le variabili passate da una pagina all’altra nel URL, nascondendo, nel nostro caso, lo username e la password inseriti.

SPECIFICHE FINALI

ESERCIZIO6
- Creare un pagina di login che permetta di accedere ad una pagina php, che dopo aver lanciato uno script di backup della propria hompage, ne permetta il successivo download,
. Login -> autenticazione  nella pagina php tramite costante e utente singolo, più utenti, database su file di testo (explode), file xml, database relazionale
. esecuzione dello script shell per il backup, tar
. download del backup -> link al file creato, redirect ad un'altra pagina php che usa come mime type octetstream.
 
DA Fb Lab (http://fb-labs.blogspot.it/)


PROGETTO E SVILUPPO
Diagramma di flusso allegato.


COLLAUDO
Per verificare il corretto funzionamento del progetto e il suo comportamento in stati anomali sono stati eseguiti i seguenti test:
                                                          
N° TEST
DESCRIZIONE
STATO
1
Log in con dati corretti         
Verificato
2
Log in con dati errati
Verificato
3
Accesso e controllo della presenza effettiva del file compresso nella directory    
Verificato
4
Download tramite bottone
Verificato
5
Download immediato tramite funzione header
Verificato
                                                          
                       
IMPLEMENTAZIONE
Per la scrittura del codice è stato utilizzato l’editore di testo del programma che permette l’accesso remoto al server.

RILASCIO
Progetto pubblicato online, visitabile all’indirizzo 

http://217.171.47.185/5I/DArmento.Samuele/Download

LINK UTILI





Nessun commento:

Posta un commento