Programmazione WebLaboratorio 4: PHP e MySQL
Lavagna elettronica (I)
2Programmazione Web - Esercizi PHP
Un’unità aziendale di decision making opera per le decisioni di tipo consueto e ripetitivo tramite la procedura seguente:
• un qualsiasi membro del gruppo formula una linea di azione
• un secondo membro ne prende visione e, se la approva in pieno, formula una proposta identica, altrimenti propone una variante
• e così via a seguire per gli altri membri …
• non appena una proposta identica viene formulata dalla metà più uno dei componenti, la decisione viene presa e segnalata sulla lavagna a tutti i membri; una mail con la decisione presa deve essere indirizzata all’amministratore del sito (si scelga, a titolo esemplificativo, il proprio indirizzo email), indicando come mittente [email protected]
Lavagna elettronica (II)
3Programmazione Web - Esercizi PHP
La soluzione proposta è quella di una lavagna elettronica
Sala riunioni ore 20Casa Rossi, ore 15Sala riunioni ore 19…
Lavagna elettronica (III)
4Programmazione Web - Esercizi PHP
Ciascun membro può leggere la lavagna tramite il Web, verificare se è già stata presa una decisione (nel qual caso eventuali proposte vengono ignorate) e inviare la propria proposta, che come tutte le altre verrà visualizzata in forma anonima
Sezione dinamica, aggiornata ad ogni invio di proposta
Sezione statica, per l’invio di ogni proposta.
Lavagna.html
…e se si raggiunge l’accordo
5Programmazione Web - Esercizi PHP
Lavagna.html
Lavagna elettronica (IV)
6Programmazione Web - Esercizi PHP
I partecipanti sono identificati tramite e-mail e preliminarmente inseriti in un database
La pagina Lavagna.html
7Programmazione Web - Esercizi PHP
Lo script formRicevi.php si basa sulla classe Lavagna.php composta da quattro metodi statici, ciascuno dei quali effettua una connessione, esegue un’opportuna query e chiude la connessione
Lo script lavagna.php
8Programmazione Web - Esercizi PHP
L’iniezione di codice SQL è una tecnica di attacco che sfrutta i campi di input per inserire codice SQL dannoso, ottenendo informazioni private o alterando il database
Per esempio:
Iniezione di codice SQL (I)
9Programmazione Web - Esercizi PHP
‘ OR ‘’=‘Posso accedere senza conoscere la password dell’utente ‘Devis’
L’iniezione di codice SQL è una tecnica di attacco che sfrutta i campi di input per inserire codice SQL dannoso, ottenendo informazioni private o alterando il database
Per esempio:
Iniezione di codice SQL (II)
10Programmazione Web - Esercizi PHP
Altri valori catastrofici per il campo ‘username’
Esistono diverse tecniche per prevenire l’iniezione di codice SQL, tra le quali:
• tecniche che prevedono di effettuare modifiche nel file php.ini
• tecniche che prevedono il controllo degli input dell’utente eliminandone o manipolandone caratteri speciali come i singoli apici, applicabili a qualsiasi input
• tecniche che prevedono di irrobustire il codice tramite l’uso di casting ed espressioni regolari, applicabili a tipi particolari di input
Evitare iniezione di codice SQL
11Programmazione Web - Esercizi PHP
Una prima soluzione è quella di modificare direttamente il file di configurazione php.ini, attivando le magic quotes
Questa opzione inserirà il carattere di escape davanti a tutti gli apici contenuti in COOKIE, POST e GET
Questa soluzione potrebbe tuttavia non essere ottimale:
• potrebbe causare incompatibilità con molte altre applicazioni Web
• non viene attivata nessuna protezione su input che non provengono da COOKIE, GET o POST
Modifica del file php.ini
12Programmazione Web - Esercizi PHP
Un altro modo per prevenire l’iniezione di codice SQL è quello di utilizzare funzioni per la manipolazione delle stringhe:
• la funzione addslashes() che esegue il quoting di una stringa mediante slash
• la funzione htmlentities() che converte i caratteri speciali in entità HTML
• la funzione mysql_escape_string() che aggiunge sequenze di escape in una stringa per l’uso in mysql_query()
Gestione dell’input dell’utente
13Programmazione Web - Esercizi PHP
Infine, vengono utilizzate tecniche per controlli specifici sul tipo di input
• se un input deve essere un numero intero, viene utilizzato is_numeric per verificarlo e, in caso positivo, viene convertito con intval() o con funzioni analoghe
• se un input è una stringa, vengono usate le espressioni regolari per escluderne caratteri speciali
Controllo del tipo di input
14Programmazione Web - Esercizi PHP
Per inviare una mail in PHP, utilizzare la funzione mail() dopo aver opportunamente settato il file php.ini come specificato di seguito
Suggerimenti
15Programmazione Web - Esercizi PHP
• Il materiale necessario allo svolgimento dell’esercizio è reperibile al seguente indirizzo
http://www.ing.unibs.it/~deantone/MaterialePW/Lucidi/2014-2015/Laboratori/Lab4
Top Related