Joomla.it Forum

Non solo Joomla... => Sviluppo => : ndomiano 25 Sep 2013, 17:43:42

: Dubbio su sanificazione input!
: ndomiano 25 Sep 2013, 17:43:42
Penso sia l'argomento più trattato sul web e proprio per questo che ho una confusione assurda!
Se qualche utente paziente potesse darmi una mano ben venga.

PHP 5.4 + Joomla 2.5.14
Sto terminando il mio componente e sto cercando di avere molta cura e attenzione su eventuali bug (SQL INJECTION ).
I campi che io richiedo in tutto il componente sono:
 - numeri 0-9 in cui effettuo INT (UINT)
 - variabili testuali in cui effettuo il controllo == (esempio if ($action!='save') return; )
 - numeri di telefono (in cui non posso effettuare l'int dato che mi esce fuori un numero assurdo)
 - codici alfanumerici (AA99CCDD) di lunghezza prestabilita
 - 1 campo HTML libero
legenda : campi in rosso: le mie paure | campi in verde: quelli che penso siano sicuri al 100%

ho un pò di timore su come trattare questi dati, premetto che effettuo l'escape e il cast degli INT nella query ma per altri campi (quelli in rosso) non so come comportarmi, è sufficiento un preg_match?

Grazie anticipatamente.


: Re:Dubbio su sanificazione input!
: mau_develop 26 Sep 2013, 12:47:59
http://docs.joomla.org/Retrieving_request_data_using_JInput
: Re:Dubbio su sanificazione input!
: ndomiano 01 Oct 2013, 17:54:58
http://docs.joomla.org/Retrieving_request_data_using_JInput (http://docs.joomla.org/Retrieving_request_data_using_JInput)
Grazie per la dritta, uso jinput ma ho enromi difficoltà riguardo i dbquote, escape ecc.. per esempio ora che voglio salvare html puro nel db , utilizzando:
$jinput->get('message', null,'HTML');
oppure
$jinput->get('message', null,'RAW');
o qualunque altro, l'html mi viene tagliato fuori,
: Re:Dubbio su sanificazione input!
: mau_develop 01 Oct 2013, 18:57:59
Il problema in generale é più complesso e non saprei come spiegartelo senza esempi pratici o un foglio e una penna.... oltre al come filtrare esiste il dove filtrare e può non essere un unico punto.
Filtrare una request non vuol dire trovarsi dati puliti da scrivere nel DB e anche i problemi generati sono diversi.Credo possa diventare molto interessante l'intervento in programma al jday  proprio su qs argomento

Per salvare del codice é basilare almeno neutralizzare i tag che ne consentono l'interpretazione
: Re:Dubbio su sanificazione input!
: ndomiano 05 Oct 2013, 12:54:36
Il problema in generale é più complesso e non saprei come spiegartelo senza esempi pratici o un foglio e una penna.... oltre al come filtrare esiste il dove filtrare e può non essere un unico punto.
Filtrare una request non vuol dire trovarsi dati puliti da scrivere nel DB e anche i problemi generati sono diversi.Credo possa diventare molto interessante l'intervento in programma al jday  proprio su qs argomento

Per salvare del codice é basilare almeno neutralizzare i tag che ne consentono l'interpretazione
Quindi mi stai dicendo di usare l'array globale $_POST['']e da li utilizzarlo a seconda dei casi? Il problema è che non so proprio i tipi di cast, non saprei cosa usare per una variabile che deve contenere dei valori piuttosto che altri..
: Re:Dubbio su sanificazione input!
: mau_develop 05 Oct 2013, 19:04:44

Quindi mi stai dicendo di usare l'array globale $_POST['']e da li utilizzarlo a seconda dei casi?
--------------------------------------------------------------------------------------------
No,... non capisco cosa ti abbia indotto a pensarlo
Posti diversi vuol dire che non è sufficiente fare un casting nel controller per essere sicuri che al momento dell'inserimento in un db (es.) sia ancora la stessa

 Il problema è che non so proprio i tipi di cast, non saprei cosa usare per una variabile che deve contenere dei valori piuttosto che altri..
------------------------------------------
scusa ma l'hai letto il link che ti ho messo?
: Re:Dubbio su sanificazione input!
: ndomiano 06 Oct 2013, 10:09:23
si l ho letto il link ma non so comuque cosa mi filtra il tipo CMD piuttosto che HTML ecc.. posso solo vederlo facendo prove su prove..
in definitiva soffermandoci sul singolo esempio del salvataggio HTML puro in DB, potresti aiutarmi solo con quello?

ho un form, inserisco HTML, salvo su db. (fine)
grazie
: Re:Dubbio su sanificazione input!
: mau_develop 06 Oct 2013, 15:07:55
scusa ma cosa hai letto? ... il link e basta perchè tutta la pagina spiega proprio quello che chiedi tu...

    CMD

// Allow a-z, 0-9, underscore, dot, dash. Also remove leading dots from result.
$result = (string) preg_replace('/[^A-Z0-9_\.-]/i', '', $source);
$result = ltrim($result, '.');