Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222

    controlli php mysql quali fare e in base a cosa?

    ciao, non sono molto esperto di php e mysql. cmq ho un piccolo form che serve come aggiornamento di un db. Ho letto che occorre fare dei controlli vari. Mi sono un pò informato ma non ho capito molto, quel pò che ho capito è che dipende da ciò che faccio con il db. Es. se non inseriranno mai del codice html, non importa faccia un controllo a riguardo giusto?
    Fondamentalmente non credo di dover fare grandi controlli, ma chiedo a voi. Al momento è possibile inserire lettere accentate e altri caratteri senza problemi, si riesce a inserire apici singoli e doppi senza problemi, quindi che altro fare? forse ci sono controlli circa qualche misura di sicurezza?
    grazie
    Si fanno sempre nuove scoperte

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Il modo corretto per affrontare questo problema, è pensare in quali modi non convenzionali potranno essere usate le tue interfacce, se ti fermi a pensare per cosa è stata studiata la tua interfaccia non vedrai mai i potenziali problemi.

    In linea di massima comunque i controlli vanno fatti sempre e comunque.

    Un esempio potrebbe essere un guestbook, con un campo textarea semplice, se io nel guestbook ti scrivo:

    codice:
    <script type="text/javascript" src="http://www.altrosito.com/miojs.js"></script>
    Posso caricare nel tuo sito un mio file javascript che può scrivere all'interno della tua pagina qualsiasi cosa.

    Questa tecnica è conosciuta come XSS (che sta per cross site scripting).

    (per questa cosa basta usare strip_tags per togliere i tag, oppure htmlentities per trasformare i caratteri < in relative entità html facendo perdere il senso dei tag che verranno letti dal browser).

    Nel caso di strip_tags il testo nell'esempio diventerà vuoto, nel caso di htmlentities vedrai il codice ma questo non verrà interpretato.

    Per quanto riguarda l'inserimento di un testo dall'utente devi sempre filtrare i dati prima di inserirli e quindi usare mysql_escape_string per fare in modo che venga aggiunto un backslash davanti agli apici, in questo modo eviti le Sql injection.

    Poi altri tipi di controlli che devi fare sono sui tipi di dati, se hai un campo int dovrai controllare prima di comporre la query che il dato che arriva sia veramente un intero, e cosi per tutti gli altri campi (ad esempio se in un campo data scrivo manualmente un testo che non è nel formato giusto avrai un errore).

    ciao

  3. #3
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    grazie della spiegazione. Come posso però implementare la cosa avendo anche il convertitore per gli a capo. Come posso aggiungere per es. htmlentities a queste variabili?
    Codice PHP:
    $titolo=nl2br($_POST['titolo']);
                    echo(
    '
    '
    );
                    
    $descrizione=nl2br($_POST['descrizione']);
                    echo(
    '
    '
    ); 
    grazie
    Si fanno sempre nuove scoperte

  4. #4
    Beh, la cosa è piuttosto semplice.

    Codice PHP:
    $stringa =  htmlentities($stringaENT_QUOTES);
    /*
    per altri controlli - se previsti -
    usa sempre la stessa struttura
    */
    $stringa nl2br($stringa); 
    Comunque, la questione dei controlli di sicurezza degli input è un argomento molto vasto.
    Gianiaz ti ha mostrato quello che viene chiamato attacco XSS, ma ti garantisco che di controlli da fare ce ne sarebbero davvero molti.

    Il mio consiglio è di leggerti la Guida alla Sicurezza in PHP, dove sono mostrati molti tipi di attacchi di hacking e le relative contromosse.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    leggerò la guida, grazie.
    ma prendendo dati da un form posso fare come mi hai postato? cioè così?
    Codice PHP:
    $titolo=htmlentities($titoloENT_QUOTES);
                    
    $titolo=nl2br($_POST['titolo']); 
    o così?
    Codice PHP:
    $titolo=htmlentities($_POST['titolo']);
                    
    $titolo=nl2br($_POST['titolo']); 
    così direi di no, se no ricevo 2 volte il contenuto del form?
    ho detto una c.....a vero?
    Si fanno sempre nuove scoperte

  6. #6
    La soluzione che te hai scritto non ti tornerebbe il doppio controllo.
    Mi spiego.
    Te, nel primo controllo (quello delle html entities) vai a pescare la tua variabile dall'array $_POST e le associ un nome.
    Nel controllo successivo vai a pescare sempre da $_POST, ed associ lo stesso nome variabile, per cui di fatto sovrascrivi la prima.

    Ti porto un esempio pratico che, spero, ti chiarisca:

    Codice PHP:
    // $_POST['variabile'] contiene il valore di 2
    $secondo_metodo $_POST['variabile'] + 1;
    $secondo_metodo $_POST['variabile'] + 3;

    echo 
    $secondo_metodo;
    // in output ottieni 5 
    Con il metodo che ti ho descritto io invece otterresti quanto segue:
    Codice PHP:
    // $_POST['variabile'] contiene il valore di 2
    $primo_metodo $_POST['variabile'] + 1;
    $primo_metodo $primo_metodo 3;

    echo 
    $primo_metodo;
    // in output ottieni 6 
    Per qualsiasi ulteriore chiarimento, sai come rintracciarmi.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    ho capito grazie e facendo un paio di prove sono riuscito. Ora però ho implementato così:
    Codice PHP:
    $titolo=($_POST['titolo']);
                    
    $titolo=htmlentities($titoloENT_QUOTES);
                    
    $descrizione=($_POST['descrizione']);
                    
    $descrizione=nl2br($descrizione);
                    
    $descrizione=htmlentities($descrizioneENT_QUOTES);
                    echo(
    '
    '
    ); 
    ma mi chiedo: in primis se il codice è corretto scritto così. Poi in un momento di amnesia a che cavolo serve "l'echo('
    ');".
    infine ciò che non mi funzia; mettendo htmlentities in descrizione mi ritrovo che gli a capo invece di mandarmi a capo mi scrivono ovviamente
    , come posso risolvere?
    grazie
    Si fanno sempre nuove scoperte

  8. #8
    Il tag
    è omologo a
    ed indica al browser di andare a capo. Se non ricordo male, br sta per breakspace.
    Semplicemente il primo è consigliato per pagine web scritte in xHTML, mentre il secondo per il più classico HTML.
    Dipende insomma dal doctype che dichiari nel tag <head> del tuo sito.

    Come ho appena sottolineato, questo tag va usato nell'output del tuo documento.
    Dopo cioè avere richiamato i testi dal tuo DB, quindi per dargli una corretta impaginazione web.

    Va da sé che ti sconsiglio di passare i tuoi testi con nl2br() prima della INSERT nella tabella, mentre te ne consiglio l'uso successivo alla query di SELECT, in output quindi.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    scusa, ma non ho capito. conosco il significato di br (è una delle poche cose che so), il mio era un riferimento all'echo specifico.
    cmq, non ho capito cosa centri il passarglieli prima o dopo quando il mio problema è che uso un comando che annulla il br....
    scusa se ho scritto una cavolata ma non riesco proprio a capire....
    Si fanno sempre nuove scoperte

  10. #10
    Scusa, non avevo capito bene la tua prima domanda!
    Ad ogni modo, quell'echo (suppongo) sia per mettere un breakspace ed andare a capo di una riga.
    Stavo ricontrollando i vecchi post in proposito, e vedo che quella echo sta in uno dei tuoi...... quindi non so cosa volevi intendere.

    Forse sono stato poco chiaro nella spiegazione dell'altra tua domanda, ma ho dovuto interpretare quello che te avevi scritto, in quanto non avevo elementi per farti un esempio più calzante.

    Quello che provavo a dirti è che l'utilizzo di nl2br() può essere vincolato dal dove andrà stampato il testo che vi passi dentro.
    Se devi salvare il testo in un DB, oppure riportarlo all'interno di una textarea di una form, allora ti consiglio di NON utilizzare nl2br(), in quanto ti sostituisce ogni a-capo con un BR.
    Per i db è inutile mettersi a salvarci dentro dei tag HTML, per le textarea invece il problema è che non riconoscono come a-capo il
    . Ognuno di questi tag, in una textarea non sarà visto come tag ma come semplice testo, per cui stampato a video.

    Ti consiglio di utilizzare nl2br() solo per mandare in echo testi, che siano estratti da DB sia che provengano da form.

    Per concludere.
    Se non spieghi quello che fai con i testi provenienti dalla form, non posso essere più preciso di così.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.