[Linux-Biella] problema espressione regolare
Manfredo Enrico - Quadra Studio Web
manfredo a quadrastudio.it
Mar 5 Feb 2008 01:21:40 CET
Andrea Musuruane ha scritto:
> 2008/2/4, Remotes <webmaster a remotes.it>:
>
>> quello verrà già usato solo che in alcuni form è necessario utilizzare l'html
>> quindi non posso eliminare tutto il contenuto...
>>
>
> Allora usa questa funzione per indicare solo i tag che permetti:
>
> http://it2.php.net/strip_tags
>
>
Ho letto solo adesso, e cmq sono contento che qualcuna conosca ancora il
linguaggio.
In effetti, trovo inutile reinventare la ruota.
Faccio un breve elenco delle funzioni che possono venire comode in
questi casi.
Prima cosa, date un occhiata qui
http://www.php.net/manual/it/security.variables.php
funzioni lineari al posto di regexp
http://www.php.net/manual/it/ref.ctype.php
Eval, combinata con altre cosette può dare risultati simpatici
http://www.php.net/manual/it/function.eval.php
Checche se ne dica, session cocky ecc, se usati bene posso essere degli
ottimi
campanelli di allarme.
http://www.php.net/manual/it/ref.session.php
Funzioni di stringa basilari per l'input utente
http://www.php.net/manual/it/function.html-entity-decode.php
http://www.php.net/manual/it/function.htmlentities.php
http://www.php.net/manual/it/function.htmlspecialchars.php
http://www.php.net/manual/it/function.nl2br.php
http://www.php.net/manual/it/function.quotemeta.php
http://www.php.net/manual/it/function.strip-tags.php
Funzioni unicode < asci > unicode evitano spiacevoli sorprese di
formattazione
http://www.php.net/manual/it/ref.unicode.php
Con questi si può testare se ti stanno passando un url e se fosse,
tranciarlo
http://www.php.net/manual/it/ref.url.php
Sono andato molto a memoria, riguardando l'help del PHP che per inciso
non guardavo da almeno 2 anni (da quando qualcuno programma per me in
PHP per intendeci)
Ci sono altri bei giochetti che adesso non mi vengono in mente, cmq vale
sempre la regola.
"So quello che mi arriva, nel dubbio lo scarto."
Semplicisticamente (in realtà l'argomento è davvero vasto e ricco di
varianti e anche di errori)
In genere, quando si fanno progetti PHP. il framwork viene costruito a
"cipolla" in modo che gli strati esterni filtrino quelli interni. Ad esempio
La prima struttura gestisce le sessioni e i controlli su gli header
HTML. I dati che sorpassano una "buccia" devono essere liberi dalle
informazioni appena controllate.
Se i dati in arrivo non sono conformi deve cadere la connessione. Questo
strato si occupa anche di monitorare che le richieste fatte da un
determinato IP non falliscano (statisticamente) troppe volte in un
periodo troppo corto di tempo
La seconda "buccia" riguarda i controlli di sicurezza dei form (quelli
hidden, i semi di sessione ecc insomma, tutto quello che serve per
validare che i dati che ricevono i form non siano stati alterati o
ignettati) Se questo controllo fallisce, si resetta la sessione e si
scartano i dati in arrivo.
La terza buccia riguarda i dati contenuti dai form. Se questi non sono
coerenti, rigetto il form ed invio a reinseire il form dopo che avrò
rigenerato un nuovo seme di sessione. Ovviamente se il seme non
corrisponde. rigetto tutto allo buccia superiore, e se il caso alla
sessione.
A questo punto il mio dato è quasi sicuro. Da qui si riaprono le
"buccie" verso il database, file o quanto altro. Sempre la stessa
regola. se un controllo fallisce, deve essere demandato allo strato
superiore che deciderà cosa fare in base all'errore.
Maggiori informazioni sulla lista
Linux