Newsgroup: it.comp.www.php
Titolo: permettere l'input in HTML

Ho un CMS in cui l'utente puo inserire dell'html.
Per evitare problemi di sicurezza a quali tag dovrei fare attenzione...
Che ne dite se con un espressione regolare elimino tutti gli <script
.......................... /script>?

 ha scritto nel
messaggio news:be19ri$hr6$1...@localhost.localdomain...

http://it3.php.net/manual/it/function.strip-tags.php
fai prima ;)
stefano

 ha scritto nel messaggio
news:%nWMa.590$79....@tornado.fastwebnet.it...

dici..... glie devo segnalere tutto quello.....che permetto.....
non faccio prima a fare il contrario?


ooops! scusa ho letto male il tuo post! Sì io farei come dici tu per il
momento...ora vedo se trovo qualcosa di meglio! ;)
ciao,
ste

 ha scritto:

In questo sito si parla di HTML pericolo per le email, peró secondo me é
interessante anche per vedere HTML dannoso in generale:
http://www.ib-hoebel.de/spampal/
HTH, ciá
Silvio Porcellana
Senior Programmer
-----------------------------------------------------------------------------------
Trovanome.it - 
http://www.trovanome.it
Se non vuoi essere solo un numero...hai bisogno di un nome!
-----------------------------------------------------------------------------------
--------------------------------
Inviato via 
http://usenet.libero.it

 wrote in message
<be19ri$hr6$1...@localhost.localdomain>:

No, perche' non puoi sapere quante furbizie potrebbe impiegare il tuo
utente.
Banalmente, metti che scriva <ScrIpT>.
Allora tu dici: "ma io faccio comparazione case insensitive".
Bene, ma metti che scriva
	<img src="
http://evilserver/evilscript.js
">
...e devi aggiungere altri controlli... insomma devi inseguire il tuo
ipotetico hacker e avere piu' fantasia di lui.
Invece no: tu sai che <b>, <u>, <i> sono innocui. Bene, permetti solo
quelli! Se poi uno e' cretino, e scrive <B VERYBOLD> e glielo castra,
peggio per lui.
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

Concordando pienamente la tesi di Leonardo Serni, credo che la soluzione
migliore (adottata da me in un contesto analogo al tuo) sia realizzare un
piccolo sistema di editor, dove i tag ammessi siano inseriti tramite
appositi pulsantini (una specie di editor, insomma) come accade in alcuni
programmi per forum
I tag li inserisci tramite codice (es <b></b> viene immesso come [b][/b])
Immessi i dati, elimini tutti i tag  html evntualmente immessi e fai il
replace sostituendo i codici con i tag ammessi
Andrea


A me interesserebbe far inserire
<immaginia>
<tabelle>
<paragrafi>
<elenchi>
Quindi comunque filtrando  tutti i possibili scritp .js non ci sono altri
metodi per intervenire..
Inoltre i tag <      scritp   > possono essere scritti in molti modi,  e
l'espressione regolare da creare deve essere davvero "sopraffina" per
evitare problemi.
Comunque è da tener conto che l'utente che avrà la facolta di inserire html
è l'amministratore del sito NON un utente come potrebbe esserlo un utente di
un forum, altrimenti le cose peggiorano
Sapresti indicarmi gli exlpoit o bachi si sicurezza che vengono usati +
spesso, almeno evito il + delle situazioni ^_^

<elenchi>
Perfetto. Allora ti servono solo i tag IMG, TABLE, TR, UL, LI.
Per ciascuno di questi tag prevedi i parametri possibili.
Ci sono vari esempi sfiziosi sul manuale:
http://it3.php.net/manual/en/function.strip-tags.php
Potrebbe essere interessante usare preg_replace_callback usando come
regular expression "<[^>]*>" (cioe' qualsiasi tag) e poi lasciare la
gestione del contenuto del tag al callback, appunto.
E si dovrebbe iterare preg_replace per sostituire occorrenze in loop
come
	<scr<script></script>ipt>
		CODICE MALIGNO
	</scr<script></script>ipt>
che altrimenti passerebbe allegramente tutti i controlli.
