Newsgroup: it.comp.lang.javascript
Titolo: Parsing...

Salve a tutti:
sto sviluppando una specie di parser.
La storia e' questa: sto mettendo su una specie di BBS in asp, ma il
database cui si appoggia ha grossa crisi quando appaiono apostrofi.
Inoltre ho visto che un utente particolarmente infame potrebbe infilare nel
testo del messaggio una cosa simile:
<script>
    x=true
    while (x) {
    alert('vaffanculo')
    }
</script>
scusate il francese, ma funzionerebbe.
Non solo: le accentate costituiscono un altro problema, poiche' molti
utenti, avvezzi all'uso di Usenet mettono gli apostrofi al posto delle
lettere accentate.
Il risultato?
Quando il driver ODBC becca un apostrofo crede che la stringa sia finita e
interpreta il resto come un comando SQL, cosi' Gianfranco D'Angelo diventa
"Syntax error near 'Angelo' ".
Allora, prendendo i famosi due piccioni, con l'altrettanto famosa cipolla...
o era un fagiolo? Boh? Comunque ho realizzato uno script che controlla tutti
i caratteri dei campi alla ricerca di quelli contenuti in un array, 3colonne
* n righe, dove nelle colonne c'e' scritto: il carattere, con cosa
sostituirlo e se quello che viene dopo e' da considerare in maniera speciale
oppure no.
Cosi' le accentate diventano &egrave; &eacute; ecc ecc, gli apostrofi
diventano &lquote; e i tag HTML... dipende.
quando il programma trova un < o un altro carattere "speciale" ecco che si
mette a cercare il compagno >, se non lo trova entro il successivo < lo
sostituisce con &lt; altrimenti conta i caratteri che seguono < finche o non
incappa in uno dei comandi inseriti nell'array dove ho definito i comandi
proibiti, e allora "taglia" via il tag incriminato, o trova > e allora
lascia tutto cosi' come sta. Il risultato finale e' che la formattazione
HTML rimane, ma solo quella consentita.
Cosi' si puo' eliminare tutto cio' che si vuole dal testo inserito (basta
aggiungere alle apposite tabelle contenenti i caratteri e i comandi vietati)
dall'utente prima ancora che il server possa metterci "le mani" sopra.
Il sistema che ho descritto sta muovendo i primi passi, come ho detto, e fa
largo uso delle risorse del client.
Ci sono metodi migliori?
Chi e' interessato allo script mi mandi email qui:
god_n...@hotmail.com
(e' tutto da ottimizzare ed e' lungo due quaresime, per ora, non e' bello da
mettere su un NG)
Rispondero' al piu' presto possibile inviando una copia del medesimo, se
invece avete idee magari mettetele sul forum, cosi' ci si fa una bella
discussione sopra.
A presto
Nettuno

>Ci sono metodi migliori?
Beh, proverei anche la funzione escape(), che codifica una stringa per essere compatibile con i caratteri ammessi negli URL.
Credo quindi che lettere accentate, spazi, virgole vengano tutti convertiti nel formato:
%hex
Per esempio %20 è lo spazio (carattere 32 decimale).
Ciao.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<?xml version="1.0" encoding="UTF-8"?>
<sign>
<author>the fly on the net</author>
<description>il webmaster più alto del mondo </description>
<a href="
http://www.probo.it/aoj
">Art of JavaS.</a>
<a href="
http://www.devil-inside.net/
">the devil inside</a>
<a href="mailto:
net...@netbusiness.it
">e-mail</a>
</sign>