SQL Injection. Indice. Introduzione. Informazioni sugli autori. Capire il problema. Metodologie di testing. I problemi piu` diffusi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "SQL Injection. Indice. Introduzione. Informazioni sugli autori. Capire il problema. Metodologie di testing. I problemi piu` diffusi"

Transcript

1 SQL Injection Indice Introduzione Informazioni sugli autori Capire il problema Metodologie di testing I problemi piu` diffusi Accessi non desiderati Visualizzare dati non accessibili Analisi delle query tramite l'introduzione di errori Advanced SELECT Injection INSERT Injection STORED PROCEDURES Injection Le feature e i problemi dei DBMS piu` diffusi Scrivere codice sicuro Configurare Linux Configurare Windows 2000 o XP Professional Esempi di codice vulnerabile PHP e PostgreSQL PHP e MySQL ASP e MDB

2 Introduzione L'evoluzione delle esigenze del pubblico internauta ha comportato l'introduzione di tecnologie dinamiche (creazione di contenuti "on demand") nei piu` disparati servizi offerti dal web. Sono sempre piu` numerosi i server, anche gratuiti, che offrono la possibilita` di elaborare script per la creazione di contenuti web e sempre piu` utenti stanno convertendo i propri siti statici in vere e proprie applicazioni residenti sul web. Tali applicazioni utilizzano, nella maggioranza dei casi, dati provenienti dall'utente ed introducono quindi la possibilita` di modifica arbitraria delle variabili utilizzate dallo script, rendendo cosi` possibile l'insorgere di vulnerabilita` sfruttabili da remoto. In questo paper analizzeremo una fra le piu` diffuse vulnerabilita` delle applicazioni web-related: la vulnerabilita` da SQL Injection. Informazioni sugli autori Eduard <Master^Shadow> Roccatello studia Ingegneria Informatica presso l'universita` di Padova. Si occupa di programmazione e di amministrazione di rete con un occhio di riguardo alle problematiche di sicurezza su sistemi unixlike. Aspinall studente in Informatica e Amministratore di Sistema, si interessa di sviluppo e sicurezza in ambiente UNIX. Sono entrambi membri di S.P.I.N.E. Group (http://www.spinegroup.org) Capire il problema La maggior parte delle applicazioni web vengono realizzate interfacciando l'applicazione stessa ad un server DBMS ed interagiscono con tali server tramite l'utilizzo del linguaggio standard SQL. SQL Injection e` una tecnica di exploiting delle web application che utilizzano dati provenienti dai client nelle query, senza controllare la presenza di caratteri potenzialmente pericolosi. Contrariamente a quello che si puo` pensare, questo tipo di vulnerabilita` e` molto diffusa e tale diffusione e` spesso dovuta alla mancanza di professionalita` di molti programmatori, spesso improvvisati, e alla mancanza di solide basi di programmazione sicura. Metodologie di testing Controllare le applicazioni per trovare eventuali vulnerabilita`

3 dovute all'sql Injection potrebbe essere molto complesso ma ci sono casi dove la ricerca di script potenzialmente vulnerabili e` molto semplice. Se, ad esempio, l'aggiunta di un apice in un form ritorna una pagina bianca o piena di errori riportati dal server DBMS siamo gia` ad un buon punto di partenza per quanto comporta la ricerca delle vulnerabilita`. Un buon programmatore dovrebbe controllare l'input di ogni variabile e non pensare che l'utente, utilizzatore della web application, formatti correttamente le variabili. Ogni possibile campo dovrebbe essere testato per tutte le vulnerabilita` che potrebbero coinvolgerlo, in modo da evitare ripercussioni in tutto lo script, spesso legato ad altri. Un buon metodo di controllo delle applicazioni web potrebbe essere quello di inserire in ogni campo una comando tipico di SQL preceduto da un apice, cercando cosi` eventuali problemi sulle singole variabili. Dopo aver provato i campi uno alla volta potrebbe essere utile riempire il form con dati formalmente corretti e ripetere la procedura "apice+comando" per ogni campo, mantenendo formalmente corretti gli altri campi. Ipotizziamo di passare ad uno script questi parametri formalmente corretti: Lo script funziona alla perfezione. Proviamo ora a modificare la stringa con un apice nel parametro "nome": Ipotizzando che lo script sia vulnerabile, siamo andati a modificare i parametri inviati al server DBMS dalla query, modificandone strutturalmente la sintassi (ricordo che l'apice (') e` un operatore SQL). Cosa potrebbe accadere utilizzando una stringa di parametri come quella proposta dall'esempio? I risultati potrebbero essere molteplici: dalla semplice pagina bianca ai piu` disparati errori provenienti dal server DBMS. Potrebbe riportare l'errore che gli altri paramentri non sono stati inseriti o addirittura mostrare dati che non dovrebbero essere visualizzati con quella query. Dopo aver trovato una possibile vulnerabilita` da SQL Injection, la parte piu` importante e` l'interpretazione degli errori. Se l'errore viene generato del server DBMS siamo sicuramente davanti ad una vulnerabilita` ad SQL Injection ma gli errori spesso sono tutt'altro che ovvi. Controlliamo sempre gli errori che si riferiscono ad ODBC, alla sintassi, al server SQL. Bisogna inoltre prestare attenzione alle piu` minimali modifiche della pagina, segno di SQL Injection Exploiting, poiche` molti programmatori possono nascondere le informazioni mettendo, ad

4 esempio, eventuali errori negli header del documento HTML e non mostrandone traccia nel body, la parte visualizzata dal browser. Non bisogna fermarsi all'analisi della singola pagina colpita da SQL Injection ma e` buona abitudine seguire i link presenti nella pagina, alla ricerca di eventuali ripercussioni sull'intera applicazione ed e` importante seguire anche eventuali redirect verso una pagina di errore predefinita, spesso preceduta da una schermata di errore propria del database. I problemi piu` diffusi Passiamo ora all'analisi dei piu` diffusi problemi di sicurezza dovuti alla vulnerabilita` da SQL Injection. Accessi non desiderati L'autenticazione delle web application e` spesso delegata ad uno script di login che ha il compito di processare la coppia login/password proveniente dal client e di confrontarla con le coppie presenti nel database. In caso di corrispondenza lo script settera` gli appositi flag per consentire il nostro accesso o, nel caso opposto, ci vietera` l'accesso. Consideriamo il seguente codice PHP: $user = $_GET['nome']; $passwd = $_GET['password']; $query = mysql_query( SELECT * FROM utenti WHERE user='$user' AND password='$passwd' ); if (mysql_num_rows($query) == 0) { $logged = 0; } else { $logged = 1; } Questo breve script prende i dati dalla querystring e li mette nella query senza controllare la presenza di eventuali caratteri pericolosi. Ipotizziamo di modificare entrambi gli argomenti passati allo script in "' OR ''='" e di far processare la pagina al server. La parte condizionale della query passata al server DBMS (in questo caso MySQL) diventa:... WHERE user='' OR ''='' AND passwd='' OR ''='' Come potrete ben capire entrambe queste condizioni sono sempre verificate e mysql_num_rows() restituira` un valore sicuramente diverso da zero (se la tabella contiene dati) consentendo cose` il login a qualsiasi persona a conoscenza di questo problema.

5 Visualizzare dati non accessibili Il mancato parsing dei parametri per caratteri maligni ha introdotto la possibilita` di editare, a piacimento dell'attaccante, la query verso il database. Abbiamo appena visto che e` possibile entrare con il massimo dei privilegi in un'applicazione web ma potremmo decidere di accedere a dati non direttamente accessibili dall'applicazione stessa. Lo standard SQL permette la creazione di SELECT multiple tramite il comando UNION e tale fatto puo` essere sfruttato per gli scopi dell'attaccante. Prendiamo in esame la seguente query: SELECT nome FROM users WHERE paese='$var' La variabile $var dovrebbe contenere il paese di provenienza degli utenti, dei quali stiamo cercando il nome ma, su di essa, non viene fatto nessun controllo ed e` quindi possibile scrivere codice SQL direttamente nella variabile. Nel nostro caso $var conterra` ' UNION ALL SELECT nome, passwd FROM users ''=' Vediamo il contenuto della query una volta settata $var: SELECT nome FROM users WHERE paese='' UNION ALL SELECT nome, passwd FROM users WHERE ''='' Evidentemente la prima SELECT non restituira` nessun record (supponendo che nessun utente ha il campo paese vuoto) mentre la seconda SELECT e` incondizionata e restituira` tutte le coppie nome/password. Il problema e` quello della visualizzazione dei dati: i dati ora sono stati estratti dal database ma l'applicazione considera solo il campo "nome" e non "password". Fortunatamente (!) il linguaggio SQL permette l'aliasing dei campi tramite il comando AS che puo` essere sfruttato per fare l'output dei dati non visualizzabili ordinariamente. Analisi delle query tramite l'introduzione di errori Molti server web restituiscono parte delle query in caso di errore. Normalmente questa funzionalita` e` utile, anzi direi necessaria, durante il debugging delle applicazioni web ma puo` essere usata impropriamente per analizzare le query e quindi carpire informazioni sulla realizzazione di una web application vulnerabile da SQL Injection. E' sempre utile testare un'applicazione inserendo volutamente errori di sintassi nei campi che interagiscono con l'utente, magari utilizzando costrutti SQL incompleti come "valore'", "'",

6 "'valore", "' OR '", ";" e "0,1,2". Advanced SELECT Injection Non sempre le web application elaborano query semplici e lineari. Capita a volte che siano presenti istruzioni racchiuse da parentesi, selezione sulla base di wildcards e campi non direttamente modificabili. Iniettare codice sintatticamente corretto e funzionante all'interno di queste tipologie di query potrebbe richiedere l'utilizzo di piccoli accorgimenti, a volte non immediati. SELECT nome FROM utenti WHERE (paese='campovariabile') Estrapolare dati da una query di questo tipo non puo` essere fatto con il metodo visto nelle pagine precedenti poiche` ci verrebbero segnalati diversi errori di sintassi. Occorre quindi modificare la query utilizzando un campo di questo genere ') UNION ALL SELECT campo FROM altratabella WHERE (''=' che, sostituita nella precedente, soddisfa perfettamente la sintassi SQL: SELECT nome FROM utenti WHERE (paese='') UNION ALL SELECT campo FROM altratabella WHERE (''='') Il trucco sta semplicemente nel completare parentesi e apici con piccoli trucchi in modo da far risultare la sintassi corretta e impostare correttamente le variabili booleane di confronto. Altra sintassi che potrebbe creare problemi e` quella dovuta al costrutto di confronto LIKE. SELECT nome FROM utenti WHERE nome LIKE '%campovariabile%' I simboli di percentuale funzionano nelle query SQL come wildcards e un eventuale completamento %% ritornerebbe tutti i record e quindi non sarebbe applicabile il costrutto UNION. Bisogna quindi pensare di inserire una stringa che non risulti in nessuno dei record, come potrebbe essere ad esempio "!?!". Un campo tipico per iniettare codice in questa query potrebbe essere il seguente:!?!%' UNION ALL SELECT campo FROM tab WHERE campo LIKE '% Sostituendo la query SQL diventa: SELECT nome FROM utenti WHERE nome LIKE '%!?!%' UNION ALL SELECT campo FROM altratabella WHERE campo LIKE '%%'

7 INSERT Injection Finora abbiamo considerato SQL Injection un problema legato al costrutto SELECT ma possiamo tranquillamente dire che questa vulnerabilita` si puo` estendere a qualsiasi query contentente input dell'utente non appositamente controllato. Un altro costrutto potenzialmente vulnerabile e` INSERT, necessario per l'inserimento di nuovi record all'interno di una tabella. Controllare la vulnerabilita` di una query di inserimento comporta le stesse tecniche viste per la query di selezione ma la forzatura di queste query potrebbe segnalarci all'amministratore dell'applicazione in quanto verrebbero riportate nei record parti di sintassi SQL. Iniettare codice nella query INSERT consente all'utente smaliziato di prelevare dati da un database e utilizzarli per la propria registrazione. Ad esempio e` possibile registrarsi al posto di un altro utente senza aver nessun dato su di lui. L'unico trucco necessario per assicurarsi dell'effettiva estrazione dei dati e` quella di visualizzarli (ad esempio tramite il pannello di controllo). Per portare a termine questo tipo di exploit il server DBMS deve supportare le SUBSELECT (ad esempio MySQL non supporta questa feature) e si devono conoscere i nomi di campi e tabella, ricavabili con un po' di reverse engineering. Ipotizziamo di avere la seguente query di inserimento: INSERT INTO tab (nome, cognome) VALUES ('campo1', 'campo2') Se al posto di campo1 inseriamo e al posto di campo2 inseriamo ' + SELECT nome FROM tab LIMIT 1 + ' ' + SELECT cognome FROM tab LIMIT 1 + ' otteniamo una perfetta replica di un record esistente all'interno del database poiche` la query in questione diventa: INSERT INTO tab (nome, cognome) VALUES ('' + SELECT nome FROM tab LIMIT 1 + '', '' + SELECT cognome FROM tab LIMIT 1 + '') Per cambiare l'utente da selezionare basta scorrere i record con l'offset offerto dall'istruzione LIMIT o, eventualmente, usare la sintassi NOT IN () per ciclare i record. STORED PROCEDURES Injection Exploitare le stored procedures e` generalmente molto piu`

8 semplice che agire sul costrutto SELECT. Le stored procedures sono parti di codice SQL richiamabili nei costrutti SQL tramite l'utilizzo di EXEC e sono praticamente degli script batch, atti ad effettuare operazioni direttamente all'interno del server DBMS. Hanno la particolarita` di essere abbastanza veloci e sono molto utilizzate per le operazioni transizionali. Non tutti i server DBMS permettono l'esecuzione delle stored procedures e, per richiamare l'esecuzione delle stesse, e` necessario che lo stesso server permetta l'utilizzo di statement multipli (istruzioni SQL distinte separate da un punto e virgola). Diversi server DBMS hanno comunque queste feature e possiedono, inoltre, diverse Stored Procedures predefinite, molte delle quali possono compiere operazioni molto interessanti per un attaccante. Esaminiamo la vulnerabilita` piu` evidente nel server DBMS di MicroSoft, MS SQL Server. Tale server attiva di default innumerevoli stored procedures, fra le quali troviamo xp_cmdshell ovvero un frontend per l'interprete dei comandi dei sistemi basati su kernel NT. Il server in questione supporta statement multipli e basta quindi una qualsiasi vulnerabilita` da SQL Injection per accedere al sistema con i permessi del server SQL. Consideriamo la seguente query: SELECT * FROM tab WHERE nome='campovariabile' Terminando il primo costrutto con un nome arbitrario ed applicando la sintassi di EXEC sulla procedura xp_cmdshell otteniamo la sequente query: SELECT * FROM tab WHERE nome='ed'; EXEC master.dbo.xp_cmdshell 'cmd.exe comando' Al posto di "comando" possiamo immettere qualsiasi stringa di comando interpretabile dalla shell dei sistemi NT ovvero il sistema e` in balia dei nostri comandi. Ovviamente il sistema server SQL di Microsoft non e` l'unico ad offrire stored procedures predefinite ma e` stato preso in considerazione per la gravita` della situazione che combinata con errori di programmazione web permette l'accesso a persone non desiderate. E' quindi bene disabilitare, o rimuovere, le stored procedures non necessarie al corretto funzionamento del server e assicurarsi che i permessi sulle parti vitali del sistema siano piu` restrittivi possibile. Le feature e i problemi dei DBMS piu` diffusi MySQL Supporta 'INTO OUTFILE' Supporta 'UNION' (dalla versione 4.x)

9 Spesso gira come "root" Molti moduli e librerie non supportano statement multipli Oracle Supporta le SubSelect Supporta 'UNION' Supporta le stored procedures Non supporta statement multipli Molte stored procedures preimpostate, alcune delle quali pericolose DB2 Supporta le SubSelect Supporta 'UNION' Supporta le stored procedures Non supporta statement multipli Postgres Supporta 'COPY' se fatto girare come superutente Supporta le SubSelect Supporta 'UNION' Supporta le stored procedures Supporta gli statement multipli MS SQL Server Supporta le SubSelect Supporta 'UNION' Supporta le stored procedures Supporta gli statement multipli Molte store procedures preimpostate sono pericolose Scrivere codice sicuro Ogni web application che si rispetti deve seguire piccole norme di programmazione per elevare la sicurezza al massimo possibile. Se l'applicazione riceve input dall'utente questo deve essere processato appropriatamente in modo da escludere eventuali caratteri maligni, che potrebbero interferire con le query previste dai programmatori. E' quindi necessario lasciar passare solo i caratteri necessari e filtrare tutti gli indesiderati tramite l'utilizzo di parser appositi (magari una regular expression ben congengnata). Ad esempio per lasciar passare solo i caratteri alfabetici la regexp seguente e` l'ideale: s/[^a-za-z]//g mentre per far passare i soli numeri si puo` applicare: s/[^0-9]//g Lasciare solo i caratteri alfanumerici e` quasi sempre un'ottima soluzione al nostro problema ma puo` capitare di aver bisogno di altri tipi di caratteri. In questo caso e` bene sostituire ai caratteri la loro codifica nello standard UniCode o nello standard

10 HTML. Ovviamente e` sempre bene utilizzare il minimo numero possibile di caratteri non alfanumerici per evitare potenziali problemi di iniezione. Altra feature interessante per aumentare la sicurezza delle web application potrebbe essere l'individuazione di tentativi di iniezione del codice prima del passaggio a stored procedures e a query. All'interno delle stored procedures e` bene non creare le query dinamicamente ma cercare di mantenere fisso piu` codice possibile. Realizzare una procedura di questo tipo richiede la creazione di una procedura contentente la sola query statica ed il semplice passaggio delle variabili come parametri. Ad esempio: CREATE PROC nvarchar(255) AS SELECT nome, cognome, indirizzo, telefono FROM utenti WHERE nick RETURN La configurazione del server deve essere piu` restrittiva possibile e deve evitare la possibilita` di accedere liberamente a parti del sistema non normalmente disponibili. Disabilitare le stored procedure non necessarie agli utenti potrebbe essere la soluzione ai nostri problemi ma un'attenta policy di permessi potrebbe evitare la mutilazione eccessiva del server DBMS. Configurare Linux MySQL La versione scaricata è la seguente : mysql tar.gz Una volta scompattato diamo i seguenti comandi : #./configure --prefix=/usr # make # make install Lanciamo lo script mysql_install_db per generare i database iniziali e ora lanciamo il demone mysqld con il comando # mysql.server start Ricordatevi di settare i permessi, # chown -R root /usr/local/mysql non entriamo troppo nel dettaglio,se dovestre riscontrare dei problemi vi consigliamo di leggervi la documentazione ufficiale.

11 Una volta lasciato il demone in ascolto, possiamo settare la password per l'utente root di mysql: # mysqladmin -u root -p password Per testare il tutto connettiamoci al nostro database appena installato mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 to server version: log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> E` raccomandato connettersi al database non da root, quindi aggiungete un nuovo utente al database server. Consultate per scegliere i dovuti privilegi Apache Ora scarichiamo i sorgenti di apache e diamo i seguenti comandi : #./configure --prefix=/usr --sysconfdir=/etc/apache \ --enable-mods-shared=all --with-ssl --with-perl # make # make install httpd -version Server version: Apache/ Server built: Aug :08:05 PHP Procuriamoci la versione e scompattiamola. Compiliamo ed installiamo con la seguente procedura: #./configure --prefix=/usr --with-apxs2 \ --enable-cli --with-config-file-path=/etc/apache/php.ini \ --enable-magic-quotes --with-openssl --with-zlib \ --enable-bcmath --with-bz2 --enable-calendar --with-jpeg \ --with-tiff --enable-exif --enable-ftp --with-gd --with-gmp \ --with-gettext --with-mysql --with-mysql-sock=/var/.../mysql.sock \ --with-ncurses --enable-shmop --enable-sockets --enable-sysvmsg \ --enable-sysvsem --enable--sysvshm --enable-zend-multibyte --withpear \ --enable-trans-sid # make # make install

12 Aggiungiamo le seguenti stringhe in httpd.conf LoadModule php4_module modules/libphp4.so AddType application/x-httpd-php.php.php3 AddType application/x-httpd-php-source.phps Dovremmo aver finito, ora riavviamo apache : # apachectl restart Creiamo un database e proviamo l'interazione tra php e mysql. # mysqladmin -u root create testdb -p (testdb è il db che useremo per per eseguire i test) Editiamo una pagina di test per provare il tutto: // test.php <? # Apertura connessione verso mysql $tmp_socket=mysql_connect("localhost", "user", "prova") or die("impossibile connettere a mysql: ".mysql_error()); echo '> Apertura del database effettuata.<br>'; # Seleziono il database di test mysql_selectdb("testdb"); echo '> Database \'testdb\' selezionato.<br>'; # Creo un record nella mia tabella di test $sql = "INSERT INTO testtb(testfield) VALUES('test')"; $result = mysql_query($sql); if (!$result) { die('impossibile aggiungere record alla tabella<br>'); } else { echo '> Record inserito con successo.<br>'; } # Recupero il record appena inserito $sql = "SELECT idkey, testfield FROM testtb"; $result = mysql_query($sql); if (!$result) { die('impossibile leggere record dalla tabella<br>'); } else { $record = mysql_fetch_array($result); echo '> Il valore contenuto nella tabella per il record con idkey '.$record['idkey'].' e` <'.$record['testfield'].

13 '><br>'; } # Elimino il record creato e chiudo la connessione a mysql $sql = "DELETE FROM testtb"; $result = mysql_query($sql); if (!$result) { die('impossibile cancellare record dalla tabella<br>'); } else { echo '> Record cancellato con successo.<br>'; } mysql_close($tmp_socket); echo '> Connessione con il database chiusa.<br>';?> // EOF Eseguiamo la pagina per verificare il corretto funzionamento: #lynx /test.php > Apertura del database effettuata. > Database 'testdb' selezionato. > Record inserito con successo. > Il valore contenuto nella tabella per il record con idkey 15 e` <test> > Record cancellato con successo. > Connessione con il database chiusa. Apache, MySQL e PHP sono correttamente installati e possiamo passare all'installazione di PostgreSQL. PostgreSQL PostgreSQL e` un RDBMS e fornisce il maggior supporto agli standard ANSI SQL per quanto riguarda il software opensource ma e` leggermente piu` difficile da gestire di MySQL. Ci sono essenzialmente due modi per installare PostgreSQL: utilizzare i binari o compilare il sorgente. Entrambi le soluzioni possono essere trovate su o nel sito della propria distribuzione Linux. Installare i binari e` molto semplice e puo` essere fatto con i tools della propria distribuzione. In questo articolo parleremo della compilazione dei sorgenti di PostgreSQL. Il primo passo da effettuare e` quello di creare un utente per il database, che noi chiameremo postgres, al quale assegneremo il gruppo postgres e la home directory /usr/local/pgsql. L'installazione di PostgreSQL e` stata effettuata su una macchina

14 Linux Slackware. Copiamo il tarball dei sorgenti postgresql tar.gz in /tmp e scompattiamolo con il comando tar: tar xzvf postgresql tar.gz Abbiamo ottenuto una nuova cartella contenente i sorgenti di PostgreSQL. Spostiamoci all'interno della cartella con: cd postgresql-7.3.4/src e cominciamo a configurare il Makefile per il nostro sistema:./configure Continuiamo la compilazione con: make Se tutto va per il meglio l'ultima riga restituita dal sistema dovrebbe essere All of PostgreSQL is successfully made. Ready to install. Prima di procedere all'installazione cambiamo il nostro utente nel nostro utente postgres con su postgres e diamo il via all'installazione make install Se ci dovessero essere problemi effettuando l'installazione dall'utente postgres, e` necessario provare utilizzando il superuser root e poi cambiare il possessore dei file con il comando chown in questo modo: cd /usr/local chown -R postgres.postgres pgsql Abbiamo bisogno di informare il sistema che le librerie di pgsql sono installate. Aggiorniamo il file /etc/ld.so.conf aggiungendo la riga /usr/local/pgsql/lib e lanciando il comando /sbin/ldconfig Abbiamo quasi terminato. Dobbiamo impostare il database iniziale di PostgreSQL. Come utente postgres lanciamo il comando: /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data Facciamo partire postgres utilizzando il seguente script: su -c '/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >> /usr/local/pgsql/logs/server.log 2>&1' postgres & Abbiamo appena terminato l'installazione di PostgreSQL, non ci resta che configurare i file di configurazione che troverete nella directory /usr/local/pgsql/data/. Apriamo il file postgresql.conf con un editor di testo e settiamo la seguente opzione a true: tcpip_socket = true

15

16 Configurare Windows 2000 o XP Professional Come tutti gli applicativi sotto Microsoft Windows l'installazione del server web richiede poco tempo e pochi click. Si rivela quindi alla portata di tutti. La prima cosa da fare e` l'apertura del Pannello di Controllo e la selezione dell'icona Installazione Applicazioni. Una volta aperta la finestra di dialogo dobbiamo selezionare Aggiungi componenti di Windows ed aggiungere Internet Information Services (IIS) come da figura: Vi verra` richiesto il cd di installazione e terminata la procedura il software sara` installato sul vostro disco fisso. Procediamo ad una piccola configurazione tornando nel Pannello di Controllo, aprendo Strumenti di Amministrazione e cliccando su Internet Information Services. Apparira` la finestra in figura:

17 Apriamo il menu della figura cliccando con il tasto destro su Sito Web Predefinito e selezioniamo Proprieta` dal menu a scomparsa: apparira` la seguente finestra di dialogo. Configuriamo la home directory impostando il Percorso Locale attualmente impostato su c:\inetpub\wwwroot

18 Esempi di codice vulnerabile PHP e PostgreSQL Per i nostri test avremo bisogno di un database dove inserire le nostre tabelle. Per fare cio` logghiamoci nel sistema come utente postgres: su postgres e utilizziamo il comando: createdb nomedatabase Per le nostre prove chiamaremo il database testdb Se non l'abbiamo gia` fatto e` bene crearsi un utente per lavorare al database senza loggarsi come postgres. Io ho utilizzato il mio stesso nomeutente in modo da non usare flag durante la connessione al database da console. Il comando da utilizzare e`: createuser nomeutente Ora abbiamo accesso al server DBMS. Entriamo con le credenziali dell'utente appena creato e interfacciamoci al database test digitando il comando: psql testdb Abbiamo appena cominciato una sessione di comunicazione con il database test contenuto nel server PostgreSQL. Il nostro nuovo utente puo` tranquillamente entrare da locale ma non puo` entrare da una connessione esterna. Abbiamo quindi la necessita` di modificare il file di configurazione pg_hba.conf situato nella directory 'data' di pgsql. Io ho inserito le seguenti righe di configurazione che vanno bene per un server locale monoutente ma certo non per un server remoto. local all all password utenti host all all password utenti host all all password utenti Queste regole impostano Postgres in modo da richiede una password per l'accesso e, dopo tale autentificazione, il DBMS non ci dara` limitazioni se non quelle impostate al momento della creazione dell'utente. La dicitura password utenti dice a postgres di richiedere una password, imagazzinata in un file chiamato 'utenti' nella directory 'data' della home del server. Tale file ha la seguente struttura: nomeutente:passwordinchiaro Le password sono in chiaro quindi solo postgres deve poterci accedere.

19 Durante le nostre prove avremo bisogno essenziamente di due tabelle, create ad hoc per focalizzare l'attenzione sulla problematica, e alcuni dati fittizi. Creiamo la prima tabella nominativi tramite console: CREATE TABLE nominativi (nome VARCHAR(30), cognome VARCHAR(50)); ed inseriamo i seguenti dati: INSERT INTO nominativi (nome, cognome) VALUES ('mario', 'bianchi'); INSERT INTO nominativi (nome, cognome) VALUES ('giacomo', 'rossi'); INSERT INTO nominativi (nome, cognome) VALUES ('beppe', 'verdi'); INSERT INTO nominativi (nome, cognome) VALUES ('maria', 'bianchi'); Creiamo una seconda tabella lavoro : CREATE TABLE lavoro (ruolo VARCHAR(30), specializzazione VARCHAR(50)); ed inseriamo i dati: INSERT INTO lavoro (ruolo, specializzazione) VALUES ('ingegnere', 'supervisione'); INSERT INTO lavoro (ruolo, specializzazione) VALUES ('informatico', 'programmatore'); INSERT INTO lavoro (ruolo, specializzazione) VALUES ('manager', 'organizzazione'); INSERT INTO lavoro (ruolo, specializzazione) VALUES ('perito', 'tecnico'); Ora siamo pronti a lavorare lato scripting per mostrare la pericolosita` delle SQL Injection. Prepariamo due pagine: index.html e sql.php index.html contiene il seguente codice html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN "http://www.w3.org/tr/html4/loose.dtd""> <html> <head> <title>sql Injection</title> <meta http-equiv="content-type" content="text/html; charset=utf- 8"> </head> <body> <form action="sql.php" method="post"> <input type="text" name="query"><input type="submit"> </form>

20 </body> </html> sql.php contiene il seguente codice php: <? $conn = pg_connect('dbname=testdb user=utente password=password'); $text = ''; if (get_magic_quotes_gpc() == 1) { // GPC attivate $text = stripslashes($_post['query']); } else { $text = $_POST['query']; } $query = pg_query($conn, 'SELECT * FROM nominativi WHERE nome=\''.$text.'\''); while ($row = pg_fetch_array($query)) { print $row['nome'].' '.$row['cognome']."<br>\n"; } pg_free_result($query); pg_close($conn);?> Il codice php e` stato strutturato il modo tale da funzionare su qualsiasi tipo di php, con e senza magic quotes. Se noi apriamo con un browser index.html ed inseriamo uno dei nomi che abbiamo precedentemente inserito (ad esempio 'mario') otteniamo la voce contenente il suo nome e il suo cognome come ci aspettiamo ma proviamo ad inserire un apice ('): Warning: pg_query() query failed: ERROR: parser: unterminated quoted string at or near "'''" at character 37 in / home/apache/www/sql/sql.php on line 12 Warning: pg_fetch_array(): supplied argument is not a valid PostgreSQL result resource in /home/apache/www/sql/sql.php on line 13 Warning: pg_free_result(): supplied argument is not a valid PostgreSQL result resource in /home/apache/www/sql/sql.php on line 16 Come era nostra intenzione mostrare, il codice e` vulnerabile. Questa enorme falla permette l'esecuzione di query arbitrarie al nostro database e a tutti i database ai quali abbiamo accesso. Abbiamo volutamente inserito due tabelle nel database per fare le prove con lo statement UNION. La sintassi UNION ci permette di unire piu` query SELECT in una e in questo caso puo` essere utilizzata per visualizzare dati ai quali non avremmo accesso. Il nostro scopo e` quello di evitare la visualizzazione dei dati

SPECIALE SQL INJECTION

SPECIALE SQL INJECTION INDICE SPECIALE SQL INJECTION Difficoltà: INTERMEDIA SQL INJECTION (INTRODUZIONE).pag.1 LA TECNICA..pag.1 TESTING pag.2 I PROBLEMI PIÙ DIFFUSI..pag.3 - ACCESSI NON DESIDERATI pag.3 - VISUALIZZARE DATI

Dettagli

BASI DI DATI http://www.diee.unica.it/~giacinto/bd. Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL

BASI DI DATI http://www.diee.unica.it/~giacinto/bd. Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Contatti BASI DI DATI http://www.diee.unica.it/~giacinto/bd Esercitazione su PHP & MySQL! Roberto Tronci! e-mail: roberto.tronci@diee.unica.it!

Dettagli

APPUNTI DI PHP : V INFORMATICA SEZIONE G

APPUNTI DI PHP : V INFORMATICA SEZIONE G APPUNTI DI PHP : V INFORMATICA SEZIONE G Prof. Conti R. mysql_connect() Apre una connessione verso un DB MySQL. $db = mysql_connect([$db_host[, $db_username[, $db_password[, $newlink[,$clientflags]]]]]);

Dettagli

MySQL Database Management System

MySQL Database Management System MySQL Database Management System http://www.mysql.com/ DATABASE RELAZIONALI Un database è una collezione strutturata di informazioni. I database sono delle strutture nelle quali è possibile memorizzare

Dettagli

2. Costruire un database con Apache, PHP e MySql

2. Costruire un database con Apache, PHP e MySql 2. Costruire un database con Apache, PHP e MySql Lo scopo di questa esercitazione è realizzare un server web e costruire un database accessibile attraverso Internet utilizzando il server Apache, il linguaggio

Dettagli

Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query

Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query Costruzione di Sit Web con PHP e MySQL Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query Esercitazione In questa lezione si farà insieme una seconda esercitazione che

Dettagli

A. Bardine - Introduzione a PostgreSQL. PostgreSQL è un software relazionale e ad oggetti per la gestione di basi di dati

A. Bardine - Introduzione a PostgreSQL. PostgreSQL è un software relazionale e ad oggetti per la gestione di basi di dati Basi di dati PostgreSQL è un software relazionale e ad oggetti per la gestione di basi di dati PostgreSQL è Open-Source ed il suo sviluppo procede da 15 anni il suo codice sorgente è quindi disponibile

Dettagli

Basi di dati. Introduzione a PostgreSQL. K.Donno - Introduzione a PostgreSQL

Basi di dati. Introduzione a PostgreSQL. K.Donno - Introduzione a PostgreSQL Basi di dati Introduzione a PostgreSQL Introduzione a PostgreSQL PostgreSQL è un software relazionale e ad oggetti per la gestione di basi di dati PostgreSQL è Open-Source ed il suo sviluppo procede da

Dettagli

Pagine Asp. Pagine Asp

Pagine Asp. Pagine Asp Pagine Asp Architettura web Esistono alcune limitazioni alle applicazioni che si possono realizzare in HTML, ad esempio non è possibile costruire un sito web che consenta all utente di accedere ai dati

Dettagli

PHP e MySQL. Scripting server-side per accesso a DB MySQL

PHP e MySQL. Scripting server-side per accesso a DB MySQL PHP e MySQL Scripting server-side per accesso a DB MySQL Connessione a un DB MySQL Prima di accedere ai dati è necessario creare una connessione con il DB In PHP si utilizza la funzione mysql_connect,

Dettagli

A. Veneziani - Classe V Abacus - Elementi di elaborazione Web con supporto ai DB basati su ASP e Access

A. Veneziani - Classe V Abacus - Elementi di elaborazione Web con supporto ai DB basati su ASP e Access A. Veneziani - Classe V Abacus - Elementi di elaborazione Web con supporto ai DB basati su ASP e Access Prologo Parlando di tecnologie Web legate a Microsoft è naturale integrare le funzioni di ASP 1 con

Dettagli

La principale particolarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste degli utenti.

La principale particolarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste degli utenti. La principale particolarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste degli utenti. Questa possibilità si materializza attraverso i meccanismi che permettono

Dettagli

Ministero dell Istruzione dell Università e della Ricerca M070 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE

Ministero dell Istruzione dell Università e della Ricerca M070 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE Pag. 1/1 Sessione ordinaria 2010 Seconda prova scritta Ministero dell Istruzione dell Università e della Ricerca M070 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE CORSO DI ORDINAMENTO Indirizzo: INFORMATICA

Dettagli

PHP 5. Accesso a database

PHP 5. Accesso a database PHP 5 Accesso a database PHP ed i database PHP funziona con molti database relazionali che includono: Oracle Access Postgres SQL Server MySQL Useremo MySQL poiché è semplice da usare, gratuito e molto

Dettagli

Applicazione ASP di esempio

Applicazione ASP di esempio Applicazione ASP di esempio Database in rete Prof. Claudio Maccherani Un server web è un programma che gira su un computer sempre collegato ad Internet e che mette a disposizione file, pagine e servizi.

Dettagli

Esercitazione 8. Basi di dati e web

Esercitazione 8. Basi di dati e web Esercitazione 8 Basi di dati e web Rev. 1 Basi di dati - prof. Silvio Salza - a.a. 2014-2015 E8-1 Basi di dati e web Una modalità tipica di accesso alle basi di dati è tramite interfacce web Esiste una

Dettagli

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Data Base. Master Bio Info Reti e Basi di Dati Lezione 6 Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica

Dettagli

Nozioni di base sull utilizzo di PHP e di MySQL

Nozioni di base sull utilizzo di PHP e di MySQL Nozioni di base sull utilizzo di PHP e di MySQL Che cos è PHP? Mi sento in dovere prima di iniziare ad illustrare le nozioni di base di PHP introdurre dicendo PHP che cos è in sostanza; fino a qualche

Dettagli

PHP Survival Kit (Ovvero gestire un database MySQL tramite PHP)

PHP Survival Kit (Ovvero gestire un database MySQL tramite PHP) PHP Survival Kit (Ovvero gestire un database MySQL tramite PHP) Augusto Scatolini (webmaster@comunecampagnano.it) (a.scatolini@linux4campagnano.net) Miniguida n. 183 Ver. 1.0 aprile 2013 La prima guida

Dettagli

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Laboratorio Progettazione Web PHP e MySQL - Lezione 9 Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Architettura di una applicazione Web Browser Web HTTP Server Web PHP Dati View Control

Dettagli

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013 Laboratorio Progettazione Web PHP e MySQL - Lezione 9 Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013 Architettura di una applicazione Web Browser Web HTTP Server Web API Dati Presentation

Dettagli

Data Base in Internet

Data Base in Internet Data Base in Internet Esempio di applicazione ASP Prof. Claudio Maccherani Un applicazione che interroghi un database remoto in un server Web è scritta in ASP (Active Server Page) se piattaforma NT / IIS

Dettagli

PHP 5. PHP ed i database. Database e tabelle. Struttura di un DB relazionale. Accesso a database

PHP 5. PHP ed i database. Database e tabelle. Struttura di un DB relazionale. Accesso a database PHP ed i database PHP 5 Accesso a database PHP funziona con molti database relazionale che includono: Oracle Access Postgres SQL Server MySQL Useremo MySQL poiché è semplice da usare, gratuito e molto

Dettagli

Utilizzare PHP 5. Le variabili GET e POST

Utilizzare PHP 5. Le variabili GET e POST Utilizzare PHP 5 Corso Interazione Uomo Macchina AA 2005/2006 Le variabili GET e POST La principale particolarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste

Dettagli

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE Programmare in Php con Xampp e NetBeans IDE NetBeans è un IDE ben noto ai programmatori Java. Con esso si possono infatti costruire applicazioni desktop professionali dotate di interfaccia grafica, applicazioni

Dettagli

PHP. Per poter interagire con i dati che si trovano sul server remoto occorrono strumenti server-side.

PHP. Per poter interagire con i dati che si trovano sul server remoto occorrono strumenti server-side. PHP Il linguaggio HTML e i linguaggi di scripting come Javascript impongono alcune limitazioni alle applicazioni che si possono realizzare : per esempio non è possibile costruire un sito Web che consenta

Dettagli

ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE CORSO SPERIMENTALE Progetto ABACUS SIMULAZIONE PROVA SCRITTA DI INFORMATICA

ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE CORSO SPERIMENTALE Progetto ABACUS SIMULAZIONE PROVA SCRITTA DI INFORMATICA Istituto di Istruzione Superiore Alessandrini - Marino ESAME DI STATO DI ISTITUTO TECICO IDUSTRIALE CORSO SPERIMETALE Progetto ABACUS SIMULAZIOE PROVA SCRITTA DI IFORMATICA La società PcTeramo srl è una

Dettagli

Quesiti 6 e 7) - 9 - Creiamo il file query4.php su una piattaforma OPEN SOURCE usando in linguaggio PHP ospitato su un webserver APACHE per interrogare un database MYSQL. Tale file verrà attivato cliccando

Dettagli

Corso di Web Programming

Corso di Web Programming Corso di Web Programming 11. PHP - Complementi Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea in Informatica Applicata

Dettagli

Applicazione client-server in PHP con database MySQL

Applicazione client-server in PHP con database MySQL Applicazione client-server in PHP con database MySQL Emanuele Scapin 1 1 Liceo Statale F.Corradini, via Milano 1, 36016 Thiene 30/05/2012 1 Premessa Dopo la trattazione di argomenti teorici di progettazione

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

Università degli Studi di Cagliari Corso di Laurea in Ingegneria delle Telecomunicazioni. http://www.diee.unica.it/~giacinto/bd

Università degli Studi di Cagliari Corso di Laurea in Ingegneria delle Telecomunicazioni. http://www.diee.unica.it/~giacinto/bd Università degli Studi di Cagliari Corso di Laurea in Ingegneria delle Telecomunicazioni BASI DI DATI http://www.diee.unica.it/~giacinto/bd Esercitazione su PHP & PostgreSQL Docente: Giorgio Giacinto A.A.

Dettagli

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server 2) Il Server richiama l'interprete PHP il quale esegue i comandi contenuti nel file.php specificato nell'attributo action del tag form creando un file HTML sulla base dei dati inviati dall utente 1) Il

Dettagli

Installazione di Apache 2.2 Installazione di PHP 5.4 Installazione di MySQL 5.5 Configurazione e test di PHP-MySQL con l'estensione mysqli e mysql

Installazione di Apache 2.2 Installazione di PHP 5.4 Installazione di MySQL 5.5 Configurazione e test di PHP-MySQL con l'estensione mysqli e mysql Installare Apache 2.2, PHP 5.4, MySQL 5.5 su Windows In questo tutorial mostreremo in dettaglio le procedure di installazione e configurazione di Apache 2.2, PHP 5.4 e MySQL 5.5 su Windows XP/7. Il nostro

Dettagli

Introduzione a PHP Gestione dei Dati e della Conoscenza

Introduzione a PHP Gestione dei Dati e della Conoscenza Introduzione a PHP Gestione dei Dati e della Conoscenza Diego De Cao, Roberto Basili {decao,basili}@info.uniroma2.it a.a. 2008/2009 PHP Overview PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

Dettagli

SQL Injection The dark side of webapplication *** Siamo davvero certi che chi gestisce i nostri dati sensibili lo faccia in modo sicuro?

SQL Injection The dark side of webapplication *** Siamo davvero certi che chi gestisce i nostri dati sensibili lo faccia in modo sicuro? SQL Injection The dark side of webapplication *** Siamo davvero certi che chi gestisce i nostri dati sensibili lo faccia in modo sicuro? Che cos'e' SQL? Acronimo di 'Structured Query Language E' un linguaggio

Dettagli

Architettura a tre livelli (1)

Architettura a tre livelli (1) Elaborazione Automatica dei Dati Php e MySQL Enrico Cavalli Anno Accademico 2012-2013 Architettura a tre livelli (1) Le applicazioni sono sviluppate secondo una architettura a tre livelli, affermatasi

Dettagli

Sicurezza Informatica: Tecniche di SQL INJECTION

Sicurezza Informatica: Tecniche di SQL INJECTION Sicurezza Informatica: Tecniche di SQL INJECTION Pietro Bongli Aprile 2004 N.B. L'informazione contenuta in queste pagine è divulgata per scopi puramente didattici e non per ni illegali. Structured Query

Dettagli

Remote SQL Command Execution

Remote SQL Command Execution Remote SQL Command Execution Spesso si ha a che fare con SQL Injection se ci si trova nel campo della sicurezza informatica, ma non sempre si è a conoscenza di quanto una vulnerabilità del genere può essere

Dettagli

3. Programmazione con le pagine ASP classiche

3. Programmazione con le pagine ASP classiche LIBRERIA WEB 3. Programmazione con le pagine ASP classiche 1. Le pagine ASP in generale ASP (Active Server Pages) è una tecnologia Microsoft che consente di scrivere codice eseguibile (script) lato server,

Dettagli

The world s most advanced class on PostgreSQL o quasi! 4 Marzo 8 Aprile 2015. L'Antipasto 11 Marzo

The world s most advanced class on PostgreSQL o quasi! 4 Marzo 8 Aprile 2015. L'Antipasto 11 Marzo The world s most advanced class on PostgreSQL o quasi! 4 Marzo 8 Aprile 2015 L'Antipasto 11 Marzo Riepilogo della puntata precedente ##################### Avviamo la macchina virtuale #####################

Dettagli

Apache MySQL PHP - FTP

Apache MySQL PHP - FTP Apache MySQL PHP - FTP Scelta del software, Installazione e configurazione Ivan Grimaldi grimaldi.ivan@gmail.com HcssLug GNU/LINUX USERS GROUP Outline Cenni sul funzionamento di un WebServer Apache, PHP,

Dettagli

GESTIONE DI MDB in WEB

GESTIONE DI MDB in WEB GESTIONE DI MDB in WEB Il presente documento riporta un esempio generico di gestione di un database di Access. Il lettore può personalizzare in base alle proprie esigenze sia il contenuto del database,

Dettagli

MySQL Controllare gli accessi alla base di dati A cura di Silvio Bonechi per http://www.pctrio.com

MySQL Controllare gli accessi alla base di dati A cura di Silvio Bonechi per http://www.pctrio.com MySQL Controllare gli accessi alla base di dati A cura di Silvio Bonechi per http://www.pctrio.com 15.03.2006 Ver. 1.0 Scarica la versione pdf ( MBytes) Nessuno si spaventi! Non voglio fare né un manuale

Dettagli

MANUALE ESSENZIALE MYSQL

MANUALE ESSENZIALE MYSQL Autore: Classe: Luciano Viviani TERZA INFORMATICA SERALE (3IS) Anno scolastico: 2003/2004 Scuola: Itis Euganeo MANUALE ESSENZIALE MYSQL Manuale La dispensa vuole fornire agli studenti delle classi quinte

Dettagli

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN Il metodo migliore per creare nuovi DB è quello di usare l interfaccia del PHPMYADMIN (che viene installata automaticamente con il pacchetto easy

Dettagli

L interfaccia a riga di comando di MySql

L interfaccia a riga di comando di MySql L interfaccia a riga di comando di MySql Una volta completata la procedura di installazione possiamo finalmente testare le funzionalità di MySQL. Sia che ci si trovi in ambiente Linux che Windows, l'interfaccia

Dettagli

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database Corso di Informatica Modulo T3 B3 Programmazione lato server 1 Prerequisiti Architettura client/server Conoscenze generali sui database 2 1 Introduzione Lo scopo di questa Unità è descrivere gli strumenti

Dettagli

Tecnologie e Programmazione Web

Tecnologie e Programmazione Web Presentazione 1 Tecnologie e Programmazione Web Html, JavaScript e PHP RgLUG Ragusa Linux Users Group SOftware LIbero RAgusa http://www.solira.org - Nunzio Brugaletta (ennebi) - Reti 2 Scopi di una rete

Dettagli

APPENDICE B Le Active Server Page

APPENDICE B Le Active Server Page APPENDICE B Le Active Server Page B.1 Introduzione ad ASP La programmazione web è nata con la Common Gateway Interface. L interfaccia CGI tuttavia presenta dei limiti: ad esempio anche per semplici elaborazioni

Dettagli

Lavorare con MySQL Parte Seconda.

Lavorare con MySQL Parte Seconda. Lavorare con MySQL Parte Seconda. PHP, dalla versione 4.0, usufruisce difunzioni native per colloquiare con MySQL, senza appoggiarsi ad alcuna libreria o modulo esterno. In questa lezione verranno esaminate

Dettagli

Guida a PHP. Primi esempi

Guida a PHP. Primi esempi Guida a PHP Php è un modulo aggiuntivo per web server che permette di creare delle pagine web dinamiche. Una pagina in Php è composta sia da tag html, sia da parti in codice di programmazione Php. Ogni

Dettagli

ASP: DOMANDE E RISPOSTE (Q&A)

ASP: DOMANDE E RISPOSTE (Q&A) Autore: Classe: Nicola Ceccon QUINTA INFORMATICA (5IA) Anno scolastico: 2003/2004 Scuola: Itis Euganeo ASP: DOMANDE E RISPOSTE (Q&A) Dispensa La dispensa presenta i contenuti fondamentali di ASP nella

Dettagli

Attacchi alle applicazioni web: SQL injection e Cross-site scripting (XSS)

Attacchi alle applicazioni web: SQL injection e Cross-site scripting (XSS) UNIVERSITÀ DEGLI STUDI DI CATANIA Facoltà di Ingegneria Corso di laurea Specialistica in Ingegneria Informatica Tesina di Sicurezza nei Sistemi informativi Simona Ullo Attacchi alle applicazioni web: SQL

Dettagli

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE CHIARA FERRARI 5I MERCURIO INDICE: 1. TRACCIA DEL PROBLEMA 2. SVILUPPO DEL PROGETTO (ENTITA, ATTRIBUTI) 3. SCHEMA E-R DELLA BASE DEI

Dettagli

SOLUZIONE SECONDA PROVA INFORMATICA ITC ESAME DI STATO 2002/2003 TRAMONTANA

SOLUZIONE SECONDA PROVA INFORMATICA ITC ESAME DI STATO 2002/2003 TRAMONTANA Esame di Stato Istituto Tecnico Commerciale CORSO SPERIMENTALE Progetto "MERCURIO" Indirizzo: PROGRAMMATORI Soluzione della Seconda Prova - Tema di: INFORMATICA Anno Scolastico: 2002-2003 Riflessioni e

Dettagli

Corso di Web programming Modulo T3 A2 - Web server

Corso di Web programming Modulo T3 A2 - Web server Corso di Web programming Modulo T3 A2 - Web server 1 Prerequisiti Pagine statiche e dinamiche Pagine HTML Server e client Cenni ai database e all SQL 2 1 Introduzione In questa Unità si illustra il concetto

Dettagli

A. Lorenzi Pagine ASP

A. Lorenzi Pagine ASP Pagine ASP Web server software per la gestione di un computer host Internet oppure di un server di rete, che mette a disposizione dati o applicativi per gli utenti della rete Web server IIS (Internet Information

Dettagli

Guida a PhpMyAdmin. Introduzione

Guida a PhpMyAdmin. Introduzione Guida a PhpMyAdmin Introduzione Non è detto che, per installare uno script, si debba necessariamente conoscere il Php. I puristi della programmazione inorridiranno certamente leggendo questa frase ma è

Dettagli

--- PREMESSE INTRODUZIONE. .:luxx:.

--- PREMESSE INTRODUZIONE. .:luxx:. SQL INJECTION --- SICUREZZA.:luxx:. PREMESSE Questa guida accenna ad alcuni metodi di SQL injection e si sofferma sulla prevenzione di tali attacchi, per comprendere al meglio il testo è necessaria una

Dettagli

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati e Web Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio

Dettagli

Apache 2, PHP5, MySQL 5

Apache 2, PHP5, MySQL 5 Installazione di Apache 2, PHP5, MySQL 5 Corso Interazione Uomo Macchina AA 2005/2006 Installazione e Versioni Considerazione le versioni più recenti dei vari software così da poterne sperimentare le caratteristiche

Dettagli

Come installare Apache 2.2, PHP 5.2 e MySQL 5 su Windows 2000/XP (di Andrea Turso)

Come installare Apache 2.2, PHP 5.2 e MySQL 5 su Windows 2000/XP (di Andrea Turso) Come installare Apache 2.2, PHP 5.2 e MySQL 5 su Windows 2000/XP (di Andrea Turso) Introduzione Il nostro scopo principale è quello di ottenere una piattaforma di sviluppo per poter realizzare e testare

Dettagli

Introduzione ai servizi di Linux

Introduzione ai servizi di Linux Introduzione ai servizi di Linux Premessa Adios è un interessante sistema operativo Linux basato sulla distribuzione Fedora Core 6 (ex Red Hat) distribuito come Live CD (con la possibilità di essere anche

Dettagli

Creazione ed uso di un data base in ACCESS Lezioni ed esercizi

Creazione ed uso di un data base in ACCESS Lezioni ed esercizi Creazione ed uso di un data base in ACCESS Lezioni ed esercizi 1 ACCESS Gli archivi Gli archivi sono un insieme organizzato di informazioni. Aziende Clienti e fornitori Personale Magazzino Enti pubblici

Dettagli

Installare e configurare Apache, PHP, MySQL e PHPMyAdmin su OS X Lion 10.7

Installare e configurare Apache, PHP, MySQL e PHPMyAdmin su OS X Lion 10.7 Installare e configurare Apache, PHP, MySQL e PHPMyAdmin su OS X Lion 10.7 Luigi Maggio Personal web portforlio: www.luigimaggio.altervista.org Indirizzo e- mail: luis_may86@libero.it Installare e configurare

Dettagli

MYSQL. Avviare MySQL Per avviare il server MySQL basta lanciare il Servizio Mysql presente (aggiunto) tra i servizi di sistema.

MYSQL. Avviare MySQL Per avviare il server MySQL basta lanciare il Servizio Mysql presente (aggiunto) tra i servizi di sistema. Documento creato da Andrea www.ceccherini.net Per informazioni : andrea@ceccherini.net MYSQL MySQL è un database piuttosto popolare, reso ancor più interessante da almeno due fattori: primo, la sua gratuità;

Dettagli

Laboratorio di sistemi Web Application in Php5 Php

Laboratorio di sistemi Web Application in Php5 Php Applicazioni web con Xampp, Php5 e NetBeans 6.5 (Windows) Vogliamo ora riscrivere a titolo di prova un'applicazione web precedentemente scritta in Java (si legga l'articolo all'indirizzo http://www.mauriziocozzetto.net/pdf/dao_mysql.pdf).

Dettagli

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas PHP A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas Copyright Istituto Italiano Edizioni Atlas Programmazione lato server PHP è un linguaggio che estende le funzionalità

Dettagli

RELAZIONE RELATIVA ALLA GESTIONE DEL SITO DI E-COMMERCE

RELAZIONE RELATIVA ALLA GESTIONE DEL SITO DI E-COMMERCE Gabriele Fiorani 5^D Mercurio 2012/2013 RELAZIONE RELATIVA ALLA GESTIONE DEL SITO DI E-COMMERCE TRACCIA DEL PROBLEMA Realizzare un sito di tipo e-commerce che consenta di gestire l intera procedura informatica

Dettagli

RELAZIONE E-COMMERCE

RELAZIONE E-COMMERCE RELAZIONE E-COMMERCE di Jessica Gregoire Istituto Tecnico Economico Agostino Bassi Anno scolastico 2012/2013 1 INDICE Traccia del problema : pagina 2 Analisi di massima: pagina 2 Analisi al dettaglio:

Dettagli

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti Corso di Sicurezza Informatica Sicurezza del software Ing. Gianluca Caminiti SQL Injection Sommario Premessa sul funzionamento dei siti dinamici SQL Injection: Overview Scenari di attacco: Errata gestione

Dettagli

GUIDA BASE ALL SQL by DaD

GUIDA BASE ALL SQL by DaD GUIDA BASE ALL SQL by DaD Introduzione L'SQL, è un linguaggio per database anche se sarebbe meglio definirlo un sublinguaggio in quanto a differenza dei linguaggi veri e propri non possiede alcun comando

Dettagli

Il sito della scuola con

Il sito della scuola con Incontro in aula virtuale del 24 gennaio 2013 Il sito della scuola con La sicurezza di un sito Joomla Il Pacchetto Joomla pasw quickstart versione 2.0. a cura di Gianluigi Pelizzari IIS Fantoni Clusone

Dettagli

Ambiente Virtuale Inclusivo per la Persona Autistica MANUALE OPERATORE. Release 1.0-13/10/09. Copyright Lynx 2009 http://www.lynxlab.

Ambiente Virtuale Inclusivo per la Persona Autistica MANUALE OPERATORE. Release 1.0-13/10/09. Copyright Lynx 2009 http://www.lynxlab. MANUALE OPERATORE Release 1.0-13/10/09 Copyright Lynx 2009 http://www.lynxlab.com Indice generale MANUALE OPERATORE...1 1.1 Definizioni...3 1.2 Ambienti...3 1.3 Release e copyright...3 2. Utenti...4 2.1

Dettagli

Un client su arduino invia i dati acquisiti ad un database

Un client su arduino invia i dati acquisiti ad un database Un client su arduino invia i dati acquisiti ad un database PROBLEMA Si vogliono inviare, periodicamente, i dati acquisiti da alcuni sensori ad un database presente su di un server. Arduino con shield Ethernet

Dettagli

Backup e Restore di un database PostgreSQL Sandro Fioravanti INFN-LNF

Backup e Restore di un database PostgreSQL Sandro Fioravanti INFN-LNF SPARC-CS-12/001 20 Gennaio 2012 Backup e Restore di un database PostgreSQL Sandro Fioravanti INFN-LNF Abstract Vengono descritte le procedure di backup e restore dei dati memorizzati in un database di

Dettagli

Postfix & MySQL tables on Mac OS X

Postfix & MySQL tables on Mac OS X Postfix & MySQL tables on Mac OS X www.kdev.it Questa é una guida passo passo per ottenere da Mac OS X un server di posta SMTP con POSTFIX compilato con supporto per le tabelle di MySQL. Condizioni strettamente

Dettagli

Trucchi, consigli e suggerimenti per il tuo portale in ASP

Trucchi, consigli e suggerimenti per il tuo portale in ASP Trucchi, consigli e suggerimenti per il tuo portale in ASP di Salvatore Aranzulla Prima edizione Luglio 2004 Pagina 1 di 162 Sai che è possibile creare un sito con guestbook, news, sondaggi e tutto quello

Dettagli

Il sito della scuola con Joomla

Il sito della scuola con Joomla sabato 26 ottobre 2013 LINUX DAY 2013 E OPEN SPACE SCUOLA Il sito della scuola con Joomla a cura di Gianluigi Pelizzari gianpelizzari@yahoo.it Il sito della scuola con Joomla Joomla è un progetto nato

Dettagli

AJAX. Goy - a.a. 2006/2007 Servizi Web 1. Cos'è il Web 2.0

AJAX. Goy - a.a. 2006/2007 Servizi Web 1. Cos'è il Web 2.0 AJAX Goy - a.a. 2006/2007 Servizi Web 1 Cos'è il Web 2.0 Web 2.0 = termine introdotto per la prima volta nel 2004 come titolo di una conferenza promossa dalla casa editrice O Reilly L'idea è che ci si

Dettagli

Magento - guida all'installazione

Magento - guida all'installazione Magento - guida all'installazione a cura di Luca Soave 1- Premesse In questa guida impareremo come ottenere un sito web su base Magento allocato in un Ubuntu Server su macchina vistuale, basandoci sulle

Dettagli

4 Pubblicare i dati MySQL

4 Pubblicare i dati MySQL 4 Pubblicare i dati MySQL sul Web Eccoci: questo è ciò che probabilmente vi interessava di più! In questo capitolo imparerete le procedure per prendere delle informazioni contenute in un database per poi

Dettagli

hottimo procedura di installazione

hottimo procedura di installazione hottimo procedura di installazione LATO SERVER Per un corretto funzionamento di hottimo è necessario in primis installare all interno del server, Microsoft Sql Server 2008 (Versione minima Express Edition)

Dettagli

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet 1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet Controllo dell utente connesso al sito tramite JSP, Java Beans e Servlet. Ciò che ci proponiamo di fare è l accesso

Dettagli

PHP + MySQL. Programmazione lato server. Cosa vediamo. MySQL. MySQL: comandi utili. MySQL: accesso al server. web server.

PHP + MySQL. Programmazione lato server. Cosa vediamo. MySQL. MySQL: comandi utili. MySQL: accesso al server. web server. Cosa vediamo web server Programmazione lato server PHP + MySQL request response web client database server Cosa vediamo MySQL browser Apache PHP engine MySQL server MySQL is a very fast, robust, relational

Dettagli

Lorenzo Sarti sarti@dii.unisi.it Materiale didattico http://www.dii.unisi.it/~ sarti

Lorenzo Sarti sarti@dii.unisi.it Materiale didattico http://www.dii.unisi.it/~ sarti Lorenzo Sarti sarti@dii.unisi.it Materiale didattico http://www.dii.unisi.it/~ sarti Obiettivi esercitazioni Utilizzare nella pratica un DBMS Apprendere il linguaggio SQL Apprendere come si accede ad un

Dettagli

REALIZZAZIONE DI REPORT MEDIANTE MICROSOFT EXCEL 2007

REALIZZAZIONE DI REPORT MEDIANTE MICROSOFT EXCEL 2007 SISTEMA A SUPPORTO DEI PROCESSI DI PROGRAMMAZIONE E CONTROLLO DI GESTIONE NELLE ORGANIZZAZIONI PUBBLICHE REALIZZAZIONE DI REPORT MEDIANTE MICROSOFT EXCEL 2007 Copyright 2010 CSIO Società di Informatica

Dettagli

FileMaker 13. Guida ODBC e JDBC

FileMaker 13. Guida ODBC e JDBC FileMaker 13 Guida ODBC e JDBC 2004-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono marchi di FileMaker,

Dettagli

Accesso a basi di dati con ASP. Algoritmo per visualizzare un DB

Accesso a basi di dati con ASP. Algoritmo per visualizzare un DB Accesso a basi di dati con ASP 1 Algoritmo per visualizzare un DB 1. creare una connessione tra lo script ASP e il database 2. Costruire una QUERY in linguaggio SQL che opera sul database 3. Recuperare

Dettagli

Titolo Dispensa. Sistemi Informativi sul Web

Titolo Dispensa. Sistemi Informativi sul Web Titolo Dispensa Sistemi Informativi sul Web a cura di: prof. Giuseppe Psaila INTRODUZIONE Questo materiale affronta il problema della realizzazione di sistemi informativi basati sulla tecnologia del World

Dettagli

Le mie immagini su WEB: l ABC per iniziare. 6 maggio 2008

Le mie immagini su WEB: l ABC per iniziare. 6 maggio 2008 Le mie immagini su WEB: l ABC per iniziare 6 maggio 2008 1 1) Le nostre immagini su internet; perchè? 2) il WEB...il pc di chi accede (il client)...il sito (server); 3) costruzione del sito (design, strumenti

Dettagli

WEBGATE400 ACTIVEX CONTROL. Manuale Programmatore

WEBGATE400 ACTIVEX CONTROL. Manuale Programmatore WEBGATE400 ACTIVEX CONTROL Manuale Programmatore Pagina 1 SOMMARIO Webgate400 ActiveX Control... 3 1 A Chi è destinato... 3 2 Pre requisiti... 3 3 Introduzione... 3 3.1 Requisiti di sistema... 3 3.2 Distribuzione

Dettagli

Interoperabilità. Open Database Connectivity (ODBC)

Interoperabilità. Open Database Connectivity (ODBC) Interoperabilità L utilizzo contemporaneo di sorgenti di dati (data source) eterogenee in singole applicazioni è il principale problema in progetti complessi e distribuiti. La soluzione passa attraverso

Dettagli

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO CARICARE DATI IN UNA TABELLA DA UN FORM Per utilizzare il Database nel Web, è necessario essere collegati al Db stesso, per far ciò, si utilizzano gli ADO

Dettagli

Approfondimento: i sistemi di gestione delle basi di dati (DBMS)

Approfondimento: i sistemi di gestione delle basi di dati (DBMS) Approfondimento: i sistemi di gestione delle basi di dati (DBMS) Prerequisito essenziale della funzionalità delle basi di dati è il controllo e la fruibilità dell informazione in esse contenuta: a tale

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

Dettagli

Navigazione automatica e rilevazione di errori in applicazioni web

Navigazione automatica e rilevazione di errori in applicazioni web Politecnico di Milano Navigazione automatica e rilevazione di errori in applicazioni web Relatore: Prof. Stefano Zanero Fabio Quarti F e d e r i c o V i l l a A.A. 2006/2007 Sommario Obiettivo: Illustrare

Dettagli

Caratteristiche dell'applicativo da utilizzare Schema generale della procedura e organizzazione dei dati

Caratteristiche dell'applicativo da utilizzare Schema generale della procedura e organizzazione dei dati Esame di Stato Istituto Tecnico Commerciale CORSO SPERIMENTALE Progetto "MERCURIO" Indirizzo: PROGRAMMATORI Soluzione della Seconda Prova Tema di: INFORMATICA Anno Scolastico: 2002-2003 Riflessioni e apparecchiature

Dettagli

Gate Manager. 1 Indice. Table of Contents. your partner

Gate Manager. 1 Indice. Table of Contents. your partner 1 Indice Table of Contents 1Indice...1 2Introduzione...2 3Cosa vi serve per cominciare...2 4La console di amministrazione...3 4.1Installazione della console di amministrazione...3 4.2Avviare la console

Dettagli