Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Creando un modulo per phpnuke si è accesa una interessante discussione col mio 'collega' programmatore php:
dovendo inserire in nel database dei dati provenienti dai form prima di tutto filtriamo i dati. Abbiamo quindi guardato un po' a giro materiale sulle sql-injection e le union select.
In molti siti il consiglio è quello di sostituire le virgolette doppie " con \" per evitare problemi.
Nessuno, o quasi, fa invece attenzione agli apici singoli '.
Eccoci quindi al dubbio: nelle query mysql i dati (e quindi anche le variabili provenienti dai form) vengono "incapsulati" da apici singoli. un esempio: $query="SELECT * FROM tabella WHERE qualcosa='$variabile_dal_form'";
Quindi io mi proteggerei proprio da questi (sostituendo ' con /').
Non riesco invece a trovare un attacco possibile usando gli apici doppi " che tanto fanno paura ai programmatori...
tommyblue ha scritto:In molti siti il consiglio è quello di sostituire le virgolette doppie " con " per evitare problemi.
Nessuno, o quasi, fa invece attenzione agli apici singoli '.
Boh.. direi che solo gli apici singoli possano dare noie (e il backslash), personalmente non ho mai badato alle virgolette doppie, anche perché, in fase di visualizzazione in una pagina html, queste diventano "
Certo che " viene mostrato come " dal browser, ma sarebbe buona norma per l'applicazione web sostituire tutti i caratteri " con " prima di mandarli in output.
tommyblue ha scritto:lo facevo anch'io, ma prova nel form a scrivere in html, ad esempio <a href="link">, non funziona più nulla
Che intendi? Certo, < e > vengono sostituiti da < e > quindi il link in effetti non viene creato... è normale, è per evitare che chicchessia scriva quello che gi pare, magari fastidiosi effetti javascript. Per questo si utilizza la funzione htmlencode
Forse intendevi qualcos'altro?
In questo caso la cosa più semplice è usare un codice tipo BBCode che si usa anche in questo forum per esempio (devi costruirti il tuo parser). Oppure un altro parser per controllare che il testo immesso non contenga ciò che non vuoi.. morale: secondo me è meglio creare un tuo codice per permettere ciò che vuoi.
se usi smarty c'è un modifier/plugin aggiuntivo che ti permette di interpretare già il
bbcode. Su un sito cui collaboro l'abbiamo adattato velocemente (sono delle regular expression per aggiungere dei bbcode personalizzati.