![Page 1: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/1.jpg)
Programmazione WebLaboratorio 4: PHP e MySQL
![Page 2: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/2.jpg)
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]
![Page 3: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/3.jpg)
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…
![Page 4: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/4.jpg)
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
![Page 5: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/5.jpg)
…e se si raggiunge l’accordo
5Programmazione Web - Esercizi PHP
Lavagna.html
![Page 6: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/6.jpg)
Lavagna elettronica (IV)
6Programmazione Web - Esercizi PHP
I partecipanti sono identificati tramite e-mail e preliminarmente inseriti in un database
![Page 7: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/7.jpg)
La pagina Lavagna.html
7Programmazione Web - Esercizi PHP
![Page 8: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/8.jpg)
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
![Page 9: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/9.jpg)
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’
![Page 10: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/10.jpg)
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’
![Page 11: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/11.jpg)
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
![Page 12: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/12.jpg)
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
![Page 13: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/13.jpg)
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
![Page 14: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/14.jpg)
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
![Page 15: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera](https://reader035.vdocuments.pub/reader035/viewer/2022062307/5542eb75497959361e8de53b/html5/thumbnails/15.jpg)
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