Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web -...

15
Programmazione Web Laboratorio 4: PHP e MySQL

Transcript of Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web -...

Page 1: Programmazione Web Laboratorio 4: PHP e MySQL. Lavagna elettronica (I) 2Programmazione Web - Esercizi PHP Un’unità aziendale di decision making opera.

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.

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.

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.

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.

…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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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