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

Post on 02-May-2015

225 views 0 download

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

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 LavagnaElettronica@serviziomail.it

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