Pagina 1 di 1

attacchi PHP: apici singoli e doppi

Inviato: mer 15 giu 2005, 16:21
da tommyblue
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... :?

cretino io??

Inviato: mer 15 giu 2005, 17:26
da MAT
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 "

Inviato: mer 15 giu 2005, 19:18
da tommyblue
MAT ha scritto:non ho mai badato alle virgolette doppie, anche perché, in fase di visualizzazione in una pagina html, queste diventano "
:?: :?: :?:

casomai il contrario: " viene visualizzato come "
proprio per questo spesso si usa una funzione per trasformare le doppie virgolette in "

" rimane "

Inviato: mer 15 giu 2005, 20:11
da MAT
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.

Inviato: mer 15 giu 2005, 20:15
da tommyblue
lo facevo anch'io, ma prova nel form a scrivere in html, ad esempio <a href="link">, non funziona più nulla

Inviato: mer 15 giu 2005, 23:32
da MAT
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?

Inviato: gio 16 giu 2005, 1:15
da tommyblue
si, che il controllo lo farei sul tag e non sulle doppie virgolette e < >, non voglio, ad esempio, un javascript, ma un link o simili si!

Inviato: gio 16 giu 2005, 10:18
da MAT
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.

Inviato: lun 27 giu 2005, 16:08
da hebiten
Hola,
qui trovi molte cose sulla sicurezza in php.

http://phpsec.org/


bye

Inviato: mar 28 giu 2005, 11:44
da evaimitico
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.