Fondamenti di programmazione
Corso php a cura del prof. Pietro De Paolis
Sicurezza informatica
Il lavoro del programmatore è soggetto ad attacchi di altri esperti informatici, presenti sulla rete internet; questi esperti si chiamano anche hacker.
Individuare gli hacker non è semplice, sia perché sono delle persone straniere, sia perché un qualunque computer o smartphone può essere esso stesso un hacker, all'insaputa del suo possessore.
Ogni sito web è soggetto ad attacchi informatici; ogni sito può essere colpito; si dice vulnerabile un sito che non è abbastanza coperto contro questi attacchi; l'attacco informatico è detto anche minaccia informatica. Ogni sito va protetto dalle minacce informatiche.
Vediamo ora alcuni tipi di minacce e come difendersi da esse, onde eliminare alcune vulnerabilità conosciute.
1 - Cross-Site Scripting (XSS)
L'attacco Cross-Site Scripting, abbreviato XSS, consiste nell'inserire parole proibite in una pagina web che accetta dati in ingresso, mediante un form, cioè un modulo o una scheda da riempire con dati da parte dell'utente, cioè la persona che si collega al sito web; si dice lato cliente, cioè lato utente, il computer e lo smartphone che usiamo noi. Lato server è ciò che avviene nella applicazione web, subito dopo aver inviato i dati al server, cioè il computer che analizza i dati in ingresso, li elabora, cioè fa dei calcoli o dei confronti, e poi manda in uscita una risposta al computer o smartphone da cui è partita la richiesta, cioè all'utente che ha riempito il modulo.
Uno che attacca un sito può inserire, in un modulo che chiede il nome o il cognome, il seguente script in Javascript:
<script><alert();</script>
se il sito non è protetto da un attacco tipo XSS, può apparire un avviso del
tipo:

bloccando l'applicazione fin quando non si clicca su OK.
Una prima protezione lato utente, per proteggere la casella di testo di nome = contenuto del modulo di nome = uscita2, può essere la seguente:
|
function controlla(){
a100 =document.uscita2.contenuto.value; // cerco parole vietate vietate=/www|src|embed|<|http|img|script|alert/gi; a1=a100.search(vietate); if (a1>-1) { parte=a100.slice(a1,a1+10); alert ("Trovate parole proibite:\n"+parte); return false; }; return true; } |
|
listato di: modo1.txt |
Ovviamente non basta. Vediamo di proteggere la casella di testo di nome = contenuto, lato server.
|
<?php
// controllo se il testo contiene parole proibite $vietate="/src|www|<|embed|img|http|script|alert/i"; if(preg_match($vietate,$contenuto)) { print("Ho trovato delle parole non consentite!"); exit; }; ?> |
|
listato di: modo2.txt |
Corso di programmazione in PHP
prof. Pietro De Paolis
Indice di tutte le pagine del sito