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.
- header('Content-Type: application/octet-stream');
- header('Content-Disposition: attachment; filename="file.zip"');
- header('Content-Transfer-Encoding: binary');
- readfile('file.zip');
- ?>
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.
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
|
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
http://217.171.47.185/5I/DArmento.Samuele/Download
LINK UTILI
http://php.net/manual/it/reserved.variables.post.php
http://php.net/manual/it/function.exec.php
http://php.net/manual/it/function.shell-exec.php
http://php.net/manual/it/function.header.php
http://php.net/manual/it/function.exec.php
http://php.net/manual/it/function.shell-exec.php
http://php.net/manual/it/function.header.php
Nessun commento:
Posta un commento