attacchi PHP: apici singoli e doppi

Postate qui per tutte le discussioni legate alla sicurezza di Linux/Slackware

Moderatore: Staff

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.
tommyblue
Linux 2.0
Linux 2.0
Messaggi: 112
Iscritto il: gio mar 10, 2005 0:00
Contatta:

attacchi PHP: apici singoli e doppi

Messaggioda tommyblue » mer giu 15, 2005 16:21

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??

Avatar utente
MAT
Linux 3.x
Linux 3.x
Messaggi: 1242
Iscritto il: mer mar 09, 2005 0:00
Nome Cognome: Matteo Magni
Kernel: 2.6.20
Desktop: Fluxbox
Distribuzione: Gentoo
Località: Vignola, Modena
Contatta:

Messaggioda MAT » mer giu 15, 2005 17:26

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 "

tommyblue
Linux 2.0
Linux 2.0
Messaggi: 112
Iscritto il: gio mar 10, 2005 0:00
Contatta:

Messaggioda tommyblue » mer giu 15, 2005 19:18

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 "

Avatar utente
MAT
Linux 3.x
Linux 3.x
Messaggi: 1242
Iscritto il: mer mar 09, 2005 0:00
Nome Cognome: Matteo Magni
Kernel: 2.6.20
Desktop: Fluxbox
Distribuzione: Gentoo
Località: Vignola, Modena
Contatta:

Messaggioda MAT » mer giu 15, 2005 20:11

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
Linux 2.0
Linux 2.0
Messaggi: 112
Iscritto il: gio mar 10, 2005 0:00
Contatta:

Messaggioda tommyblue » mer giu 15, 2005 20:15

lo facevo anch'io, ma prova nel form a scrivere in html, ad esempio <a href="link">, non funziona più nulla

Avatar utente
MAT
Linux 3.x
Linux 3.x
Messaggi: 1242
Iscritto il: mer mar 09, 2005 0:00
Nome Cognome: Matteo Magni
Kernel: 2.6.20
Desktop: Fluxbox
Distribuzione: Gentoo
Località: Vignola, Modena
Contatta:

Messaggioda MAT » mer giu 15, 2005 23:32

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 &lt; e &gt; 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?

tommyblue
Linux 2.0
Linux 2.0
Messaggi: 112
Iscritto il: gio mar 10, 2005 0:00
Contatta:

Messaggioda tommyblue » gio giu 16, 2005 1:15

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!

Avatar utente
MAT
Linux 3.x
Linux 3.x
Messaggi: 1242
Iscritto il: mer mar 09, 2005 0:00
Nome Cognome: Matteo Magni
Kernel: 2.6.20
Desktop: Fluxbox
Distribuzione: Gentoo
Località: Vignola, Modena
Contatta:

Messaggioda MAT » gio giu 16, 2005 10:18

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.

hebiten
Linux 1.0
Linux 1.0
Messaggi: 87
Iscritto il: mer gen 28, 2004 0:00

Messaggioda hebiten » lun giu 27, 2005 16:08

Hola,
qui trovi molte cose sulla sicurezza in php.

http://phpsec.org/


bye

evaimitico
Linux 2.0
Linux 2.0
Messaggi: 140
Iscritto il: mer giu 16, 2004 0:00

Messaggioda evaimitico » mar giu 28, 2005 11:44

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.


Torna a “Sicurezza”

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti