Riguardo all' SQL Injection non avevo un esempio sottomano, ma poi l'ho trovato. Provate questo
http://www.sinfonica.com/english/per_id.php?id=221.
E' evidente che il parametro passato viene poi usato per effettuare la query. Adesso vediamo se chi ha programmato questo sito valida l'input utente. Proviamo ad aggiungere al link questo: "%20AND%201=0" (senza le virgolette), ottenendo questo
http://www.sinfonica.com/english/per_id.php?id=221 AND 1=0.
Direi che la validazione non c'è.... In un caso come questo, l'uso degli apici avrebbe potuto impedire il nostro giochetto.
Differenza tra le query ipotizzate:
SELECT * FROM books WHERE id = $_GET['id']
con i nostri parametri diventa:
SELECT * FROM books WHERE id = 221 AND 1=0
che non ritorna nessun libro.
Se avesse usato gli apici:
SELECT * FROM books WHERE id = '221 AND 1=0'
Che avrebbe funzionato a dovere.
P.S. Ho mandato un avviso al gestore del sito per avvisarlo del problema. Se effettuerete i test è possibile che non siano più funzionanti.