Visualizzazione risultati 1 fino 8 di 8

Discussione: Filtraggio di codice PHP inserito via form.

  1. #1
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito Filtraggio di codice PHP inserito via form.

    Ciao a tutti.
    Ho necessità di filtrare l'input degli utenti per evitare attacchi come "iniezioni" al database, attacchi javascript o porno-spam.

    Per i campi "nome" e "licenza" ho risolto utilizzando la funzione di Mysql FILTER_SANITIZE_STRING.

    Tuttavia vorrei fare in modo che i campi "descrizione" e "testo" siano liberi, ovvero sia possibile inserire tutti i tag di formattazione, link ed embedding voluti eccetto PHP e JS.
    Esiste un modo per filtrarli?
    Grazie.

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Da quello che so io, se usi delle funzioni per filtrare, o impedire l'inserimento di caratteri che possano essere interpretati come codice, li applica su tutto il testo di quei campi.

    L'unica soluzione e integrare un bb-code fatto da te ( personalizzato ), puoi prendere spunto da questa discussione:

    http://forum.it.altervista.org/php-m...nalizzato.html

    Cosa che io ti consiglio di fare, anche perché, da come puoi vedere in quella discussione, la modifica da bbcode a html avviene solo se il tag è ben formato o chiuso correttamente.

    Ovviamente dovresti creare ai codice html i rispettivi codice bbcode, tranne quelli riguardanti il php e il javascript, che da quello che ho capito non vuoi.

    Ma io tutto questo, l'interpretazione da bbcode a html lo farei solo nel momento in qui dovresti recuperare i dati dal database.

    Invece, prima di salvare i dati nel database io trasformerei tutti i caratteri speciali, tramite la funzion htmlspecialchars() o altro.. ma tutto questo lo farei solamente se adotterei il bbcode, cosa che come già detto ti consiglio per quello che te vuoi fare.

    P.S.: O forse te intendevi sapere altro?
    Ultima modifica di sevenjeak : 14-11-2011 alle ore 16.30.35

    Sevenjeak
    Software developer and much more

  3. #3
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito

    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    Da quello che so io, se usi delle funzioni per filtrare, o impedire l'inserimento di caratteri che possano essere interpretati come codice, li applica su tutto il testo di quei campi.

    L'unica soluzione e integrare un bb-code fatto da te ( personalizzato ), puoi prendere spunto da questa discussione:

    http://forum.it.altervista.org/php-m...nalizzato.html

    Cosa che io ti consiglio di fare, anche perché, da come puoi vedere in quella discussione, la modifica da bbcode a html avviene solo se il tag è ben formato o chiuso correttamente.

    Ovviamente dovresti creare ai codice html i rispettivi codice bbcode, tranne quelli riguardanti il php e il javascript, che da quello che ho capito non vuoi.

    Ma io tutto questo, l'interpretazione da bbcode a html lo farei solo nel momento in qui dovresti recuperare i dati dal database.

    Invece, prima di salvare i dati nel database io trasformerei tutti i caratteri speciali, tramite la funzion htmlspecialchars() o altro.. ma tutto questo lo farei solamente se adotterei il bbcode, cosa che come già detto ti consiglio per quello che te vuoi fare.

    P.S.: O forse te intendevi sapere altro?
    Grazie per la risposta.
    Non avevo preso in considerazione l'uso del BBCODE ma sembra una buona soluzione.

    Il fatto è che per il campo "text" sto usando CKeditor che va più che bene perché trasforma i tag in caratteri speciali e inibisce possibile codice malevolo.

    Il problema è che basta disabilitare JS per avere una normalissima textarea e, inoltre, vorrei proporre ad i miei utenti anche una soluzione senza CKEditor (per vecchi browser).

    In tal caso, dovrei fare in modo che i tag <b>, <i>, <u>, <strong>, <blink>, <font>, <a>, <img>... vengano conservati ma i PHP e i JS no (basterebbe inserire uno sputo di codice PHP per cancellare tutto il database, o accedere alle password degli utenti).

    Inoltre, alla fine del testo preso dal database (inserito dall'utente) bisogna chiudere automaticamente i tag che gli utenti potrebbero lasciare aperti...

    Any idea?

  4. #4
    Guest

    Predefinito

    Risposta a volo: puoi benissimo farlo con le regex ;)
    Non ho links a portata di mano, ma con qualche ricerca trovi tutto l'occorrente :)

  5. #5
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito

    Fantastico, infatti immaginavo che le Regex mi sarebbero potute essere d'aiuto...

    Purtroppo ho scandagliato il web ma non ho trovato nulla di già pronto e non ho mai toccato nulla di Regex (purtroppo, perchè ci si possono fare cose fantastiche).

    Non è che qualcuno ha qualcosa di già fatto che mi posso adattare anche con conoscenze simil-zero?

  6. #6
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    non so se è quello che cerchio, ma per impedire codice php nel text area, esiste la funzione molto utile strip_tags() manuale http://php.net/manual/en/function.strip-tags.php

    strip_tags ( string $str [, string $allowable_tags ] )

    con allowable_tags specifici tutti i tags che vuoi mantenere....attivi nel text area.
    Ultima modifica di EuroSalute : 16-11-2011 alle ore 15.44.03 Motivo: più info
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  7. #7
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito

    Grazie per il tuo consiglio, era proprio quello che mi serviva ;-)

  8. #8
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito

    Perfetto, funziona benissimo ma c'è un problema che ho notato solo ora:

    se inserisco del testo tra simboli maggiore e minore esso viene interpretato come tag!!! Quindi per esempio matrobriva <miaemail> diventa matrobriva!

    Mi sa che quindi l'unica soluzione è quella di rimuovere totalmente l'html dal form per l'aggiunta del testo semplice e lasciarlo soltanto a Ckeditor (che converte i tag in &lt e &gt)...

    Oppure c'è altro da sapere?

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •