-
Meno male......che ho fatto delle prove con testi piu` lunghi.
http://www.coderholic.com/firefox-4k-xml-node-limi...
$facePalm-
Re: Meno male...
- Scritto da: alex.tg
> $facePalm
Quoto
... Anche se, mi domando, che te ne fai di 4KB di XML nel browser
?
Fai una trasformazione XSL in HTML via javascript
?
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...> > $facePalm
>
> Quoto
... Anche se, mi domando, che te ne fai
> di 4KB di XML nel browser
> ?
> Fai una trasformazione XSL in HTML via javascript
>
> ?
Sto lavorando a quel CMS che (a parte che ormai ha una gran bella versione no-javascript comunque inclusa allo stesso URL) se puo`, carica tutti i contenuti con approccio ajax: e` una specie di piccola wiki, che divide gli articoli in paragrafi. Ogni nodo nell'elemento <text> e` in elemento <paragraph>: ecco, un paragrafo di testo in un articolo puo` superare i 4 KB.
Pero` visto che ti suona strano, ora mi fai venire il dubbio che ci fossero altri modi. Hai consigli? Tu non faresti cosi? E se no, come?
-
Re: Meno male...Aah, credo di aver capito.
http://en.wikipedia.org/wiki/Xslt#Example_2_.28tra...

Potrei fare questa cosa qui, invece di costruire il tutto in una stringa javascript: si scrive un template in cui si marcano i campi da riempire, e il resto avviene automaticamente. Um... me lo appunto, ma credo che per ora possa farne a meno: il "template" non e` per niente complicato.-
Re: Meno male...Ma e` possibile che quando penso a qualcosa di relativo al comportamento di un sito web, poi scopro che qualcun'altro ci aveva gia` pensato intorno al '98?
UFFAAAA QUI NON TI LASCIANO MAI FARE NIENTE DA SOLO!

-
-
Re: Meno male...
- Scritto da: alex.tg
> Pero` visto che ti suona strano, ora mi fai
> venire il dubbio che ci fossero altri modi. Hai
> consigli? Tu non faresti cosi? E se no, come?
>
Non capisco perche' devi ulteriormente "parsare" l'XML che ricevi ...
Cioe', per il mio miniblog tramite ajax io ricevo direttamente HTML, suddiviso nei suoi bei DIV con un classname, poi al rendering ci pensa il CSS ...
Io piglio la risposta e la "appendo" a un nodo predisposto nella pagina, finito.`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-29 15:49:00.0 alle 2010-06-29 15:49:00.0
- Scritto da: Giambo
>
> - Scritto da: alex.tg
>
> > Pero` visto che ti suona strano, ora mi fai
> > venire il dubbio che ci fossero altri modi. Hai
> > consigli? Tu non faresti cosi? E se no, come?
> >
>
> Non capisco perche' devi ulteriormente "parsare"
> l'XML che ricevi
> ...
> Cioe', per il mio miniblog tramite ajax io ricevo
> direttamente HTML, suddiviso nei suoi bei DIV con
> un classname, poi al rendering ci pensa il CSS
> ...
> Io piglio la risposta e la "appendo" a un nodo
> predisposto nella pagina,
> finito.
vomit-
Re: Meno male...- Scritto da:
> vomit
Motiva`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
-
-
Re: Meno male...> > Pero` visto che ti suona strano, ora mi fai
> > venire il dubbio che ci fossero altri modi. Hai
> > consigli? Tu non faresti cosi? E se no, come?
> >
>
> Non capisco perche' devi ulteriormente "parsare"
> l'XML che ricevi
> ...
> Cioe', per il mio miniblog tramite ajax io ricevo
> direttamente HTML, suddiviso nei suoi bei DIV con
> un classname, poi al rendering ci pensa il CSS
> ...
> Io piglio la risposta e la "appendo" a un nodo
> predisposto nella pagina,
> finito.
Ah, be', capisco. In fondo potrei farlo anch'io. Anche perche` al momento non faccio molto di piu`, e ora che ci penso, in questo modo ho duplicato l'assemblaggio della pagina: la parte PHP la assembla nella versione no-script, il javascript la assembla nello stesso modo, in entrambi i casi congiungendo i paragrafi e avvolgendoli in DIVs. Lo stesso per le entries di una side-bar con collegamenti ad altri articoli della stessa sezione. Um... in effetti, a 'sto punto l'intero assemblaggio di entrambe le parti (articolo e side-bar) potrebbe anche avvenire interamente sul lato PHP...
um... pero` cosi` per la versione ajax ho ancora risposte XML che potrebbero essere riutilizzate... boh... da remoto, non influenzate dalla struttura HTML che viene aggiunta a parte.
Boh. In fondo mi torna abbastanza bene: cosi` ho codice duplicato ma simile (una versione PHP, una versione JS) per entrambi i casi. Se faccio un cambiamento da una parte devo propagarlo all'altra, ma la similitudine dovrebbe aiutare.
-----------------------------------------------------------
Modificato dall' autore il 29 giugno 2010 16.09
------------------------------------------------------------
Re: Meno male...
- Scritto da: alex.tg
> um... pero` cosi` per la versione ajax ho ancora
> risposte XML che potrebbero essere
> riutilizzate... boh... da remoto, non influenzate
> dalla struttura HTML che viene aggiunta a
> parte.
Su questo hai perfettamente ragione, all'inizio mi ero orientato pure io sull'XML, per poter offrire delle specie di WebServices REST.
Pero' poi ho pensato che il mio e' un progettino-ino-ino, quindi sarebbe stato un overkill.
Quel che puoi fare e' pero' tenere il "servizio" che offre XML e aggiungerci una specie di "filtro" che converta se necassario il contenuto della risposta in HTML prima di spedirlo al browser. Cosi' appesantisci il server, pero' "alleggerisci" il client: La pagina deve caricare veloce, se ti metti a traversare tutto l'XML via javascript avrai per forza un certo delay ...
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...> Su questo hai perfettamente ragione, all'inizio
> mi ero orientato pure io sull'XML, per poter
> offrire delle specie di WebServices
> REST.
...che tuttavia in quel che sto facendo non sono previsti, e` anch'esso un progettino: non ino ino ma neanche molto di piu`; pero`...
> Pero' poi ho pensato che il mio e' un
> progettino-ino-ino, quindi sarebbe stato un
> overkill.
...con la differenza che non e` calibrato su bisogni miei, e che quindi - non si sa mai - ci potrebbero essere features aggiuntive impreviste, quindi sto solo cercando di renderlo un po' flessibile.
> Quel che puoi fare e' pero' tenere il "servizio"
> che offre XML e aggiungerci una specie di
> "filtro" che converta se necassario il contenuto
> della risposta in HTML prima di spedirlo al
> browser. Cosi' appesantisci il server, pero'
> "alleggerisci" il client: La pagina deve caricare
> veloce, se ti metti a traversare tutto l'XML via
> javascript avrai per forza un certo delay
> ...
Ci sto pensando.
Fra l'altro, stavo guardando quell'XSLT che hai menzionato, di cui avevo sentito parlare ma che non avevo mai usato o approfondito. Non ho ancora ben chiaro se XSL potrebbe servire a questo scopo (da dove parte e dove arriva), e se il PHP ha un'estensione per tradurre i template XSL in HTML, ma se ce l'ha ed e` installata dall'hosting provider, potrei farci un pensiero. Scusa se ti "sfrutto", ma d'altronde come web designer definirmi inesperto e` farmi un complimento. Se hai ancora un minuto, fammi capire se ho capito bene leggendo la wiki
:
- l'XSL e` uno "standard" per definire templates; questi vengono tradotti lato server a partire da un template e da un file XML con i dati con cui riempirlo; una volta tradotto, l'output e` una stringa di codice HTML (che puo` essere un frammento o anche un'intera pagina).
E` cosi`?
Se e` cosi`, allora fa al caso mio.
Alternativamente... faccio da solo, oppure lascio tutto cosi`, tanto il delay, se c'e`, e` impercettibile, ed e` improbabile che questo CMS abbia a che fare con database enormi: plausibilmente, si trattera` al massimo di alcune dozzine di elementi per richiesta. Pero` evitare il delay potrebbe rientrare in una filosofia di eventuale scalabilita` futura.-
Re: Meno male...
- Scritto da: alex.tg
> > Su questo hai perfettamente ragione, all'inizio
> > mi ero orientato pure io sull'XML, per poter
> > offrire delle specie di WebServices
> > REST.
>
> ...che tuttavia in quel che sto facendo non sono
> previsti,
Male ! Devi sempre pensare "in grande" !
Metti che Apple/Oracle/IBM vogliano comperare il tuo prodotto e integrarlo nell'Applestore/GlassFish/WebSphere: Se manca questa funzionalita' non potranno coprirti di dobloni
!
> > Quel che puoi fare e' pero' tenere il "servizio"
> > che offre XML e aggiungerci una specie di
> > "filtro" che converta se necassario il contenuto
> > della risposta in HTML prima di spedirlo al
> > browser. Cosi' appesantisci il server, pero'
> > "alleggerisci" il client: La pagina deve
> caricare
> > veloce, se ti metti a traversare tutto l'XML via
> > javascript avrai per forza un certo delay
> > ...
>
> Ci sto pensando.
Quindi non ho detto una cazzata
?
Wow
!
> Fra l'altro, stavo guardando quell'XSLT che hai
> menzionato, di cui avevo sentito parlare ma che
> non avevo mai usato o approfondito. Non ho ancora
> ben chiaro se XSL potrebbe servire a questo scopo
> (da dove parte e dove arriva), e se il PHP ha
> un'estensione per tradurre i template XSL in
> HTML, ma se ce l'ha ed e` installata dall'hosting
> provider, potrei farci un pensiero.
L'XSLT traduce XML in "qualcosa", non per forza HTML. Quindi dovresti scriverti te il template che genera l'HTML che vuoi.
E' molto comodo, unito al CSS permette facilmente di creare "skin" per il tuo sito.
Per esempio avevo per le mani un progetto che sarebbe stato venduto a giornali, banche, ...
La base era sempre la medesima, girava una sola applicazione JAVA, ma veniva applicato un XSLT con il "Look&feel" del cliente a seconda dell'URL che veniva richiamato.
> - l'XSL e` uno "standard" per definire templates;
> questi vengono tradotti lato server a partire da
> un template e da un file XML con i dati con cui
> riempirlo; una volta tradotto, l'output e` una
> stringa di codice HTML (che puo` essere un
> frammento o anche un'intera
> pagina).
>
> E` cosi`?
Si. XSL (La "T" sta per "Transformation") e' un XML che e' un linguaggio di programmazione per tradurre un XML in "qualcosa".
> Se e` cosi`, allora fa al caso mio.
Buon divertimento, puo' essere ostico/frustrante
Consiglio JEdit con l'estensione XSL e XML, non ho ancora trovato un tool che faccia a caso mio (Oltre al pesantissimo e bruttissimo XMLSpy su Windows)
Ah, ancora una cosina: Quando implementi un'applicazione che sara' pubblica, fallo sempre tenendo in mente che l'utente e' "malizioso": Tentera' SQL injection, di scavalcare i controlli di login, di iniettare javascript/HTML, ...
Una volta ho visto una specie di blog che aveva nella query-string qualcosa del tipo "&isAdmin=true"
...
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-29 19:21:00.0 alle 2010-06-29 19:21:00.0> Ah, ancora una cosina: Quando implementi
> un'applicazione che sara' pubblica, fallo sempre
> tenendo in mente che l'utente e' "malizioso":
> Tentera' SQL injection, di scavalcare i controlli
> di login, di iniettare javascript/HTML,
> ...
Figurati se alex.tg dimentica queste cose.
-
Re: Meno male...
- Scritto da:
> > Ah, ancora una cosina: Quando implementi
> > un'applicazione che sara' pubblica, fallo sempre
> > tenendo in mente che l'utente e' "malizioso":
> > Tentera' SQL injection, di scavalcare i
> controlli
> > di login, di iniettare javascript/HTML,
> > ...
>
> Figurati se alex.tg dimentica queste cose.
Eh, aveva detto di essere alle prime armi, credevo che
...
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
-
-
Re: Meno male...> Ah, ancora una cosina: Quando implementi
> un'applicazione che sara' pubblica, fallo sempre
> tenendo in mente che l'utente e' "malizioso":
> Tentera' SQL injection,
Il database SQL viene usato solo per virtualizzare dei file. In realta` usa un engine relazionale scritto in PHP, e i file virtuali nel db sono codificati in base64.
(lanciafiamme per ammazzare zanzare)
> di scavalcare i controlli
> di login,
Autenticazione di ogni modifica a cifrario monouso. Usando due volte lo stesso codice, nisba, quindi inutile crittografarlo o intercettarlo.
(altri capelli ritti)
> di iniettare javascript/HTML,
> ...
Filtro < e > dopo tutte le trasformazioni, ritrasformo soltanto stringhe tipo < i >, < b >, < u > e uso un markup interno per il resto.
> Una volta ho visto una specie di blog che aveva
> nella query-string qualcosa del tipo
> "&isAdmin=true"
> ...
Non ci sono admins ne` flags del genere, c'e` solo ZUUL... um, il cifrario monouso. Il cifrario risiede in una directory al di fuori della documents root, e io unsetto tutte le variabili utilizzate prima dell'output, e uso una define per evitare che scripts dipendenti vengano eseguiti da soli.
In certi aspetti sono alle prime armi, in altri sono paranoide.
O compromettono il server passando da software non mio, tipo un bug di Apache o una configurazione errata dei diritti d'accesso alle directory, o s'attaccano.
-----------------------------------------------------------
Modificato dall' autore il 29 giugno 2010 21.47
------------------------------------------------------------
Re: Meno male...Scritto daNon Autenticatoil 2010-06-29 23:06:00.0 alle 2010-06-29 23:06:00.0> Autenticazione di ogni modifica a cifrario
> monouso. Usando due volte lo stesso codice,
> nisba, quindi inutile crittografarlo o
> intercettarlo.
>
> (altri capelli ritti)
Mmm. Interessante.
> > di iniettare javascript/HTML,
> > ...
>
> Filtro < e > dopo tutte le trasformazioni,
> ritrasformo soltanto stringhe tipo < i >, < b >,
> < u > e uso un markup interno per il
> resto.
Spero che rimuovi da tali tag anche eventuali attributi.
> unsetto tutte le
> variabili utilizzate prima dell'output
Credo di averlo fatto anch'io una volta.
> e uso una
> define per evitare che scripts dipendenti vengano
> eseguiti da
> soli.
?
-
Re: Meno male...> Spero che rimuovi da tali tag anche eventuali
> attributi.
Nel CMS che sto facendo ora, escapo tutti le tag e poi "riattivo" solo le stringhe che esattamente rappresentano i tre < b > < i > < u > e le loro tag di chiusura, sezna attributi, un po' come presumibilmente fanno i forum di PI e il FdT.
In Postline e` piu` complicato perche` c'e` un limitato subset di tag html utilizzabili nei messaggi, e li` bisogna limitare anche molti attributi, primi fra tutti i vari event handlers tipo "onClick" ma anche "onEventHandlerMaiVistoPrima". C'e` una lista di almeno un paio di centinaia di quelle robe.
> > e uso una
> > define per evitare che scripts dipendenti
> vengano
> > eseguiti da
> > soli.
>
> ?
Cioe`, uno script che dipende dal valore di una variabile globale 'blah' e che e` fatto per essere incluso da un altro script che sa di aver inizializzato 'blah' a un valore sicuro, e che fa:<?php echo $blah; ?>
chiamato come:
host/script.php?blah=scriptMalizioso
se register_globals e` attivo funzionerebbe.
Invece:<?php if (!defined ('qualcosa')) die ('script dipendente'); echo $blah; ?>
non funzionerebbe e basta perche` gli mancherebbe il punto di partenza stabilito dallo script "genitore" che definisce la costante 'qualcosa' a un valore che viene valutato <true>. Non e` tanto che poi usi variabili globali per passare gli argomenti, ma e` una precauzione in piu` nel caso questo avvenga senza che uno se ne renda conto: una globale dimenticata, magari.-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 15:13:00.0 alle 2010-06-30 15:13:00.0> > > e uso una
> > > define per evitare che scripts dipendenti
> > vengano
> > > eseguiti da
> > > soli.
> >
> > ?
>
> Cioe`, uno script che dipende dal valore di una
> variabile globale 'blah' e che e` fatto per
> essere incluso da un altro script che sa di aver
> inizializzato 'blah' a un valore sicuro, e che
> fa:
Ah, per evitare che uno script sia chiamato dall'utente invece che dallo script che lo deve chiamare uso una variabile di sessione.
Per evitare che uno script da includere sia chiamato direttamente dall'utente uso
if ($_SERVER['SCRIPT_FILENAME'] == __FILE__)
><?php > > echo $blah; > > ?>
>
> chiamato come:
> host/script.php?blah=scriptMalizioso
> se register_globals e` attivo funzionerebbe.
> Invece:
>
><?php > > if (!defined ('qualcosa')) die ('script > dipendente'); > > echo $blah; > > ?>
>
> non funzionerebbe e basta perche` gli mancherebbe
> il punto di partenza stabilito dallo script
> "genitore" che definisce la costante 'qualcosa' a
> un valore che viene valutato <true>. Non e` tanto
> che poi usi variabili globali per passare gli
> argomenti, ma e` una precauzione in piu` nel caso
> questo avvenga senza che uno se ne renda conto:
> una globale dimenticata,
> magari.
-
Re: Meno male...>
if ($_SERVER['SCRIPT_FILENAME'] == > __FILE__)
Si` immagino vada bene ma... con register_globals stupidamente attivo, si potra` mica indurre il PHP a ridefinire anche le variabili superglobali tipo $_SERVER?
Che io sappia, la define accoppiata a if !defined e` sicura. Bah, comunque, e` improbabile che register_globals sia attiva. La mia e` piu` che altro paranoia.-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 15:24:00.0 alle 2010-06-30 15:24:00.0> >
if ($_SERVER['SCRIPT_FILENAME'] == > > __FILE__)
>
> Si` immagino vada bene ma... con register_globals
> stupidamente attivo, si potra` mica indurre il
> PHP a ridefinire anche le variabili superglobali
> tipo $_SERVER?
>
ummmm... boh?-
Re: Meno male...> > >
if ($_SERVER['SCRIPT_FILENAME'] == > > > __FILE__)
> >
> > Si` immagino vada bene ma... con
> register_globals
> > stupidamente attivo, si potra` mica indurre il
> > PHP a ridefinire anche le variabili superglobali
> > tipo $_SERVER?
> >
>
> ummmm... boh?
Appunto: nel dubbio...
-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 15:35:00.0 alle 2010-06-30 15:35:00.0> > > >
if ($_SERVER['SCRIPT_FILENAME'] == > > > > __FILE__)
> > >
> > > Si` immagino vada bene ma... con
> > register_globals
> > > stupidamente attivo, si potra` mica indurre il
> > > PHP a ridefinire anche le variabili
> superglobali
> > > tipo $_SERVER?
> > >
> >
> > ummmm... boh?
>
> Appunto: nel dubbio...
Ma ci sarà pure scritto da qualche parte no?
Dannato manuale di PHP: quello di PHP 3 l'avevo letto tutto, poi è diventato un mostro tentacolare.-
Re: Meno male...> Ma ci sarà pure scritto da qualche parte no?
Boh? Al limite, riconfigura il PHP (in locale eh??) perche` abbia l'opzione register_globals attivata, e poi fai una prova. Oppure passa all'accoppiata define/ifdefined: l'ho vista usare in phpBB, quindi immagino che l'abbiano fatto con cognizione di causa.-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 16:29:00.0 alle 2010-06-30 16:29:00.0> > Ma ci sarà pure scritto da qualche parte no?
>
> Boh? Al limite, riconfigura il PHP (in locale
> eh??) perche` abbia l'opzione register_globals
> attivata, e poi fai una prova. Oppure passa
> all'accoppiata define/ifdefined: l'ho vista usare
> in phpBB, quindi immagino che l'abbiano fatto con
> cognizione di causa.
Io non ho PHP in locale!

-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 17:54:00.0 alle 2010-06-30 17:54:00.0
- Scritto da:
> > > Ma ci sarà pure scritto da qualche parte no?
> >
> > Boh? Al limite, riconfigura il PHP (in locale
> > eh??) perche` abbia l'opzione register_globals
> > attivata, e poi fai una prova. Oppure passa
> > all'accoppiata define/ifdefined: l'ho vista
> usare
> > in phpBB, quindi immagino che l'abbiano fatto
> con
> > cognizione di causa.
>
> Io non ho PHP in locale!


nel 2010 e c'è ancora gente che non ha il PHP
-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 18:36:00.0 alle 2010-06-30 18:36:00.0> > Io non ho PHP in locale!



>
> nel 2010 e c'è ancora gente che non ha il PHP
>
In locale!
-
-
-
-
-
-
-
-
-
-
-
Re: Meno male...
- Scritto da: alex.tg
> > Ah, ancora una cosina: Quando implementi
> > un'applicazione che sara' pubblica, fallo sempre
> > tenendo in mente che l'utente e' "malizioso":
> > Tentera' SQL injection,
>
> Il database SQL viene usato solo per
> virtualizzare dei file. In realta` usa un engine
> relazionale scritto in PHP, e i file virtuali nel
> db sono codificati in base64.
>
>
> (lanciafiamme per ammazzare zanzare)
Perche' codificati base64 ? Non potevi spararli dentro come dei BLOB ? Magari prima li facevi passare da un "zippatore" per comprimerli un pochino ...
> > di iniettare javascript/HTML,
> > ...
>
> Filtro < e > dopo tutte le trasformazioni,
> ritrasformo soltanto stringhe tipo < i >, < b >,
> < u > e uso un markup interno per il
> resto.
Usi le funzioni di PHP ? Da questo punto di vista sono un po ignorante, in Java mi pare piu' immediato :/ ...
> In certi aspetti sono alle prime armi, in altri
> sono paranoide.
>
Pensavo fossi alle prime armi anche per quel che concerne la sicurezza di applicazioni WEB, ma devo dire che sono impressionato
!
OK, ora dammi l'accesso al repository SVN, che ti scovo una i due falle di sicurezza
...
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...> Perche' codificati base64 ? Non potevi spararli
> dentro come dei BLOB ?
Perche` mi "faceva paura" lo stesso, non so perche`; probabilmente pensavo che trasformarli in bytes nel range dei testi ASCII e trasfigurarli completamente sarebbe stata una soluzione piu` radicale: quando e` paranoia, e` paranoia.
> Magari prima li facevi
> passare da un "zippatore" per comprimerli un
> pochino
> ...
Gia`, perche` non lo feci? Boh, probabilmente per laziness di imparare come si faceva, in PHP. L'unica cosa che ho ritenuto abbastanza importante da imparare a gzippare, ove possibile, e` l'output testuale delle pagine web, insomma HTML, XML... quello accelerava i caricamenti per quelli che (come me) ai tempi avevano ancora la dialup, e riduceva la bandwidth, e nel 2003-2004-2005, intorno a quegli anni, ne avevo una quantita` piuttosto limitata mensilmente.
> > Filtro < e > dopo tutte le trasformazioni,
> > ritrasformo soltanto stringhe tipo < i >, < b >,
> > < u > e uso un markup interno per il
> > resto.
>
> Usi le funzioni di PHP ?
Si`, ma ormai ci ho fatto l'abitudine.
> Pensavo fossi alle prime armi anche per quel che
> concerne la sicurezza di applicazioni WEB, ma
> devo dire che sono impressionato
> !
Non garantirei comunque mai l'assenza di falle, ma almeno i possibili exploit piu` diffusi li conosco, e faccio quel che posso.
> OK, ora dammi l'accesso al repository SVN, che ti
> scovo una i due falle di sicurezza
> ...
Quale repository SVN? A Postline (il CMS del mio sito) ci lavoro solo io, e a ben pochi verrebbe in mente di installarlo altrove o di addentrarsi nei suoi meandri; dato che e` sotto GPL devo considerare l'opzione e per chi ne vuole il sorgente zippo tutto e buonanotte. Ma se hai voglia di entrare in un labirinto di PHP, pigia qui:http://anynowhere.com/bb/cd/postline.zip

-----------------------------------------------------------
Modificato dall' autore il 30 giugno 2010 11.28
------------------------------------------------------------
Re: Meno male...
- Scritto da: alex.tg
> > Perche' codificati base64 ? Non potevi spararli
> > dentro come dei BLOB ?
>
> Perche` mi "faceva paura" lo stesso, non so
> perche`; probabilmente pensavo che trasformarli
> in bytes nel range dei testi ASCII e
> trasfigurarli completamente sarebbe stata una
> soluzione piu` radicale: quando e` paranoia, e`
> paranoia.
>
Ah, vabbeh :/ ... Lo sai che base64, oltre a essere relativamente dispendioso, fa crescere la dimensione dei tuoi files
?
> > Magari prima li facevi
> > passare da un "zippatore" per comprimerli un
> > pochino
> > ...
>
> Gia`, perche` non lo feci? Boh, probabilmente per
> laziness di imparare come si faceva, in PHP.
Di sicuro gia' c'e' una libreria apposita
> L'unica cosa che ho ritenuto abbastanza
> importante da imparare a gzippare, ove possibile,
> e` l'output testuale delle pagine web,
Lo fa PHP o il server web ?
> > > Filtro < e > dopo tutte le trasformazioni,
> > > ritrasformo soltanto stringhe tipo < i >, < b
> >,
> > > < u > e uso un markup interno per il
> > > resto.
> >
> > Usi le funzioni di PHP ?
>
> Si`, ma ormai ci ho fatto l'abitudine.
Per evitare problemi, nel mio progettino ino-ino gli utente possono usare solo determinati tag: [b], [u], [i] ... Quindi non devo sbattermi piu' di quel tanto, tutti i "<" e ">" vengono convertiti in < e >
...
> > OK, ora dammi l'accesso al repository SVN, che
> ti
> > scovo una i due falle di sicurezza
> > ...
>
> Quale repository SVN? A Postline (il CMS del mio
> sito) ci lavoro solo io, e a ben pochi verrebbe
> in mente di installarlo altrove o di addentrarsi
> nei suoi meandri;
Ma io voglio scovare i bachi, come Mastro Biscotto e 127.0.0.1 e Aranzulla
> Ma se hai
> voglia di entrare in un labirinto di PHP, pigia
> qui:
>
>http://anynowhere.com/bb/cd/postline.zip

Urka, io non ero serio
... Mo' devo mettermi a ravanare il tuo codice per non perdere la faccia
!
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...> Ah, vabbeh :/ ... Lo sai che base64, oltre a
> essere relativamente dispendioso, fa crescere la
> dimensione dei tuoi files
> ?
Si`.
'portasega.
> > Gia`, perche` non lo feci? Boh, probabilmente
> per
> > laziness di imparare come si faceva, in PHP.
>
> Di sicuro gia' c'e' una libreria apposita
Laziness di imparare quale fosse, configurarla sul mio computer, accertarmi che fosse presente sul server, scontrarmi con il possibile "ho installato il tuo coso PHP del sito li`, lo volevo fare uguale, ma non mi comprime i file", ecc. La mia filosofia e` sempre la solita: a meno roba altrui ti appoggi, meglio lo gestisci.
> > L'unica cosa che ho ritenuto abbastanza
> > importante da imparare a gzippare, ove
> possibile,
> > e` l'output testuale delle pagine web,
>
> Lo fa PHP o il server web ?
Nel CMS che sto facendo oggi, il PHP. In Postline, credo il server tramite un hack in .htaccess.
Farlo fare al PHP mette nelle mie mani la necessita` di controllare che l'user agent accetti l'encoding di gzip; nel farlo fare al server avevo semplicemente sperato che lo facesse il server, quel controllo, ma non si era lamentato nessuno per cui o il controllo lo fa il server o hanno tutti browser che decodificano la versione compressa.
> Per evitare problemi, nel mio progettino ino-ino
> gli utente possono usare solo determinati tag:
> [b], [u], [i] ... Quindi non devo sbattermi piu'
> di quel tanto, tutti i "<" e ">" vengono
> convertiti in < e >
> ...
Capirai lo sbattimento...
rimpiazzo <b> con < b >, eccetera.
> >http://anynowhere.com/bb/cd/postline.zip

>
> Urka, io non ero serio
... Mo' devo mettermi
> a ravanare il tuo codice per non perdere la
> faccia
> !
Macche`, il sito stesso invita a farlo, cioe` a scovare eventuali falle e riportarle. Prima o poi qualcuno lo fara`, e in certi casi l'hanno gia` fatto: soprattutto mi hanno aiutato a capire che mi serviva una lista il piu` possibile completa degli eventi associabili a un elemento in HTML, da onclick, onmousehover, ecc a quelli assolutamente sconosciuti se non all'ideatore. Perche` li` la follia e` rendere possibile l'uso di un po' di HTML nei messaggi dei forum.
-----------------------------------------------------------
Modificato dall' autore il 30 giugno 2010 13.33
------------------------------------------------------------
Re: Meno male...- Scritto da: alex.tg
> > Ah, vabbeh :/ ... Lo sai che base64, oltre a
> > essere relativamente dispendioso, fa crescere la
> > dimensione dei tuoi files
> > ?
>
> Si`.
>
> 'portasega.
Accidenti, ma allora c'hai un hard disk grande grande, decine di meggabait
!
E magari pure un processore di piu' di cento meggaerz
!!!
> > Di sicuro gia' c'e' una libreria apposita
>
> Laziness di imparare quale fosse, configurarla
> sul mio computer, accertarmi che fosse presente
> sul server, scontrarmi con il possibile "ho
> installato il tuo coso PHP del sito li`, lo
> volevo fare uguale, ma non mi comprime i file",
> ecc. La mia filosofia e` sempre la solita: a meno
> roba altrui ti appoggi, meglio lo
> gestisci.
Hmmm ... Non sono d'accordo. Se le librerie alle quali ti appoggi sono solide e opensource, risparmi veramente tanto tanto tempo e grattacapi.
La "tua" soluzione e' gia' stata trovata da qualcun d'altro, e implementata meglio
> Farlo fare al PHP mette nelle mie mani la
> necessita` di controllare che l'user agent
> accetti l'encoding di gzip; nel farlo fare al
> server avevo semplicemente sperato che lo facesse
> il server, quel controllo, ma non si era
> lamentato nessuno per cui o il controllo lo fa il
> server o hanno tutti browser che decodificano la
> versione
> compressa.
La prima che hai detto. Fallo fare al server, magari "cacha" pure i risultati, comprime solo quel che e' comprimibile ed e' piu' veloce.
> > Per evitare problemi, nel mio progettino ino-ino
> > gli utente possono usare solo determinati tag:
> > [b], [u], [i] ... Quindi non devo sbattermi piu'
> > di quel tanto, tutti i "<" e ">" vengono
> > convertiti in < e >
> > ...
>
> Capirai lo sbattimento...
> rimpiazzo <b> con < b >, eccetera.
E il contrario ? Cioe', tu devi escapare tutti i < e > tranne quelli che identificano bold, underline, ...
La mia soluzione e' piu' migliore e flessibile
> Perche` li` la follia e` rendere possibile l'uso
> di un po' di HTML nei messaggi dei
> forum.
fckeditor
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...> Accidenti, ma allora c'hai un hard disk grande
> grande, decine di meggabait
> !
> E magari pure un processore di piu' di cento
> meggaerz
> !!!
Pensavo fosse visibilmente piu` lento anch'io, ma per ora e` risultato di no; in fondo la codifica in base64 si fa bene con shifts binari piuttosto che divisioni aritmetiche. Comunque staro` a vedere, la prima volta che qualcuno si lamenta del carico sul server, lascio perdere questa feature effettivamente paranoide.
> Hmmm ... Non sono d'accordo. Se le librerie alle
> quali ti appoggi sono solide e opensource,
> risparmi veramente tanto tanto tempo e
> grattacapi.
> La "tua" soluzione e' gia' stata trovata da
> qualcun d'altro, e implementata meglio
>
Be' piu` che altro, non avendo implementato compressione dei file virtuali nel DB, la mia soluzione non esiste.
Se pero` dovessi aggiungerla, di certo non mi sbatterei a reimplementare il deflate in PHP. 
> La prima che hai detto. Fallo fare al server,
> magari "cacha" pure i risultati, comprime solo
> quel che e' comprimibile ed e' piu'
> veloce.
Terro` presente. Almeno per quanto riguarda il comprimere il comprimibile, pero`, ho anche letto delle paginette internette che dicevano di fare attenzione a non fargli comprimere roba gia` compressa, specificando bene i tipi di file ai quali applicare l'encoding gzip, segno che da solo, forse, non se ne rende conto.
> > Capirai lo sbattimento...
> > rimpiazzo <b> con < b >, eccetera.
>
> E il contrario ? Cioe', tu devi escapare tutti i
> < e > tranne quelli che identificano bold,
> underline,
> ...
> La mia soluzione e' piu' migliore e flessibile
No, riconverto le tag escapate solo nell'output: nel db rimangono escapate fino a nuovo ordine.
> > Perche` li` la follia e` rendere possibile l'uso
> > di un po' di HTML nei messaggi dei
> > forum.
>
> fckeditor
The FCK in FCKeditor stands for Frederico Caldeira Knabben, the creator of the editor and the project's Benevolent Dictator for Life. Those letters resemble a well-known vulgarity in the English language, "fuck" (something that Frederico, a native Brazilian, was unaware of when he first released the program).
um... ma alla fine a me resta qualcosa da fare?
-
Re: Meno male...
- Scritto da: alex.tg
> > Accidenti, ma allora c'hai un hard disk grande
> > grande, decine di meggabait
> > !
> > E magari pure un processore di piu' di cento
> > meggaerz
> > !!!
>
> Pensavo fosse visibilmente piu` lento anch'io, ma
> per ora e` risultato di no; in fondo la codifica
> in base64 si fa bene con shifts binari piuttosto
> che divisioni aritmetiche. Comunque staro` a
> vedere, la prima volta che qualcuno si lamenta
> del carico sul server, lascio perdere questa
> feature effettivamente
> paranoide.
E dovrai migrare tutti i contenuti
>
> > La prima che hai detto. Fallo fare al server,
> > magari "cacha" pure i risultati, comprime solo
> > quel che e' comprimibile ed e' piu'
> > veloce.
>
> Terro` presente. Almeno per quanto riguarda il
> comprimere il comprimibile, pero`, ho anche letto
> delle paginette internette che dicevano di fare
> attenzione a non fargli comprimere roba gia`
> compressa, specificando bene i tipi di file ai
> quali applicare l'encoding gzip, segno che da
> solo, forse, non se ne rende
> conto.
Uh
! Pensavo che il magic_number fosse abbastanza
...
> > > Capirai lo sbattimento...
> > > rimpiazzo <b> con < b >,
> eccetera.
> >
> > E il contrario ? Cioe', tu devi escapare tutti i
> > < e > tranne quelli che identificano bold,
> > underline,
> > ...
> > La mia soluzione e' piu' migliore e flessibile
>
>
> No, riconverto le tag escapate solo nell'output:
> nel db rimangono escapate fino a nuovo
> ordine.
Ah ! OK, quindi escapi quando salvi nel DB, riconverti quando mostri il contenuto ma non quando lo editi ...
Io invece salvo nel DB senza convertire, e "sanitizzo" solo quando mostro i contenuti.
Credo.
Non mi ricordo
!
> um... ma alla fine a me resta qualcosa da fare?
Intascare il dinero con minimo sforzo
!
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...> E dovrai migrare tutti i contenuti

Scrivere uno scriptino che lo fa non e` un problema, ho gia` scripts di mantenimento e di sincronizzazione di eventuali rollbacks sbagliati o incompleti; una volta scritto, sara` il server a sudare. Lo pago per questo, quel fannullone di ez17.ez-web-hosting.com.
No vabbe' poverino, invece ha sempre funzionato benone... in fondo gli voglio bene.
> > delle paginette internette che dicevano di fare
> > attenzione a non fargli comprimere roba gia`
> > compressa, specificando bene i tipi di file ai
> > quali applicare l'encoding gzip, segno che da
> > solo, forse, non se ne rende
> > conto.
>
> Uh
! Pensavo che il magic_number fosse
> abbastanza
> ...
Non ti so dire se le fonti sparse fossero affidabili o le avessero scritte dei cazzoni™, so solo che se sento dire una cosa, a meno che sia completamente implausibile, la tengo presente.
> Ah ! OK, quindi escapi quando salvi nel DB,
> riconverti quando mostri il contenuto ma non
> quando lo editi
> ...
Esatto.
> Io invece salvo nel DB senza convertire, e
> "sanitizzo" solo quando mostro i
> contenuti.
>
> Credo.
>
> Non mi ricordo
!
Ammesso che sia cosi`, avevo "sentito dire" che la tua era la soluzione migliore, dalle solite fonti di affidabilita` ignota. Io comunque mi trovo bene anche con l'escaping in ingresso: e` gia` tutto sanitizzato, cosi` all'uscita, in assenza di filtri "questo si`", sarebbe tutto escapato comunque.
> > um... ma alla fine a me resta qualcosa da fare?
>
>
> Intascare il dinero con minimo sforzo
!
Ah gia`!
-
Re: Meno male...
- Scritto da: alex.tg
> > E dovrai migrare tutti i contenuti
>
> Scrivere uno scriptino che lo fa non e` un
> problema,
Uffah, hai sempre una risposta pronta tu, eh
?
> > Ah ! OK, quindi escapi quando salvi nel DB,
> > riconverti quando mostri il contenuto ma non
> > quando lo editi
> > ...
>
> Esatto.
>
> > Io invece salvo nel DB senza convertire, e
> > "sanitizzo" solo quando mostro i
> > contenuti.
> >
> > Credo.
> >
> > Non mi ricordo
!
>
> Ammesso che sia cosi`, avevo "sentito dire" che
> la tua era la soluzione migliore, dalle solite
> fonti di affidabilita` ignota.
GRANDISSIMO GIAMBO
> Io comunque mi
> trovo bene anche con l'escaping in ingresso: e`
> gia` tutto sanitizzato, cosi` all'uscita, in
> assenza di filtri "questo si`", sarebbe tutto
> escapato
> comunque.
Pero' in ogni caso devi avere due filtri in uscita: Uno per mostrare il contenuto e uno per editarlo, no ?
> > > um... ma alla fine a me resta qualcosa da
> fare?
> >
> >
> > Intascare il dinero con minimo sforzo
!
>
> Ah gia`!
E ricordati l'obolo alla Fondazione Gatto Selvaggio.
Prima pero' l'otto x 1000
...
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 18:36:00.0 alle 2010-06-30 18:36:00.0> E ricordati l'obolo alla Fondazione Gatto
> Selvaggio.
> Prima pero' l'otto x 1000
...
Puoi dare il tuo 8 per mille alla Fondazione Gatto Selvaggio.
-
Re: Meno male...> > E ricordati l'obolo alla Fondazione Gatto
> > Selvaggio.
> > Prima pero' l'otto x 1000
...
>
> Puoi dare il tuo 8 per mille alla Fondazione
> Gatto Selvaggio.
>
Come si fa a proporsi per ricevere l'8 per mille di chi vuol dartelo?
Sarebbe interessante. Mi farei premiare per la sincerita` e la faccia tosta: "dai l'8 per mille a me, ti garantisco che lo usero` solo per fini personali miei del sottoscritto."-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 22:24:00.0 alle 2010-06-30 22:24:00.0> > > E ricordati l'obolo alla Fondazione Gatto
> > > Selvaggio.
> > > Prima pero' l'otto x 1000
...
> >
> > Puoi dare il tuo 8 per mille alla Fondazione
> > Gatto Selvaggio.
> >
>
> Come si fa a proporsi per ricevere l'8 per mille
> di chi vuol dartelo?
>
>
> Sarebbe interessante. Mi farei premiare per la
> sincerita` e la faccia tosta: "dai l'8 per mille
> a me, ti garantisco che lo usero` solo per fini
> personali miei del sottoscritto."
È più o meno ciò che dichiara la Fondazione.
-
-
Re: Meno male...
- Scritto da:
> > E ricordati l'obolo alla Fondazione Gatto
> > Selvaggio.
> > Prima pero' l'otto x 1000
...
>
> Puoi dare il tuo 8 per mille alla Fondazione
> Gatto Selvaggio.
>
Se fossi italiano, lo farei !
Ma in Svizzera non funziona cosi'
...
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Meno male...Scritto daNon Autenticatoil 2010-07-01 14:35:00.0 alle 2010-07-01 14:35:00.0> > > E ricordati l'obolo alla Fondazione Gatto
> > > Selvaggio.
> > > Prima pero' l'otto x 1000
...
> >
> > Puoi dare il tuo 8 per mille alla Fondazione
> > Gatto Selvaggio.
> >
>
> Se fossi italiano, lo farei !
> Ma in Svizzera non funziona cosi'
...
Scuse, scuse, sempre scuse. Anche Caeleste ha detto che non dona nulla.
-
-
-
Re: Meno male...> Pero' in ogni caso devi avere due filtri in
> uscita: Uno per mostrare il contenuto e uno per
> editarlo, no
> ?
Aspetta che controllo... um... ingresso:function sanitize ($s) { $s = str_replace ( array ('&', '<', '>', '"'), array ('&', '<', '>', '"'), trim (stripslashes ($s)) ); $s = str_replace ("\r\n", "\n", $s); $s = str_replace ("\r", "\n", $s); $s = str_replace ("\n\n", '<p>', $s); $s = str_replace ("\n", '<BR>', $s); return ($s); }
Editing:'<textarea id="docText" class="textBox" style="width: 80ex; height: 15em" cols="80" rows="15" onChange="onTextChange ()">' . implode ("\n\n", str_replace ('<BR>', "\n", $paragraph)) . '</textarea>'
Cioe`, io immagazzino i contenuti sostituendo:
& = &
< = <
> = >
" = "
Poi interpreto i vari modi di rappresentare un \n (non si sa mai qualche browser seguisse la convenzione windows \r\n, o la macintosh \r, riducendo il tutto alla convenzione unix \n) e infine riduco ogni singolo \n in un <BR>, salvato senza escaping. E interpreto due \n consecutivi, una linea vuota, come stacco fra i paragrafi, che internamente rappresento con <p>.
Ah gia`, in effetti il <BR> devo riconvertirlo, e l'esplosione della stringa che rappresenta l'articolo viene fatta per ogni '<p>'. In uscita, mi occupo solo di isolare i paragrafi, che alla fine diventano una <div> ciascuno. Ma non mi sembra una gran pena... e poi e` che non mi fido della formattazione mantenuta con codici non "tangibili" e controllabili. Sono sospettoso & diffidente & paranoide & un po' illogico, ho le mie manie... non farci caso.
-
-
-
-
-
-
Re: Meno male...Scritto daNon Autenticatoil 2010-06-30 15:22:00.0 alle 2010-06-30 15:22:00.0> mi serviva una lista il piu` possibile completa
> degli eventi associabili a un elemento in HTML,
> da onclick, onmousehover, ecc a quelli
> assolutamente sconosciuti se non all'ideatore.
Non puoi semplicemente sostituire
<b/i/u *>
con
<b/i/u>
dove b/i/u e * corrisponderebbero a espressioni regolari che non ho voglia di cercare
?-
Re: Meno male...> > mi serviva una lista il piu` possibile completa
> > degli eventi associabili a un elemento in HTML,
> > da onclick, onmousehover, ecc a quelli
> > assolutamente sconosciuti se non all'ideatore.
>
> Non puoi semplicemente sostituire
>
> <b/i/u *>
>
> con
>
> <b/i/u>
>
> dove b/i/u e * corrisponderebbero a espressioni
> regolari che non ho voglia di
> cercare
>
> ?
Preferisco escapare TUTTE le tag in ingresso e conservarle in versione escapata. In output, riconverto quelle che considero innocue. Cosi` se devo fare modifiche al filtro in uscita non devo riconvertire tutto il db.
-
-
-
-
-
-
-
-
-
-
-
-
-
-