Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    differenza nell'escape della stringa

    ragazzi mi domandavo, ma è uguale mettere:

    Codice PHP:
    $nome mysql_escape_string(stripslashes(addslashes(htmlspecialchars($_POST['nome'])))); 
    o dovrei fare cosi?
    Codice PHP:
    $nome mysql_escape_string($_POST['nome']);
    $nome stripslashes($_POST['nome']);
    $nome addslashes($_POST['nome']);
    $nome htmlspecialchars($_POST['nome']); 

  2. #2
    i due (pessimi & inguardabili) codici non coincidono:

    L'ordine di applicazione delle funzioni è inverso:
    nel primo caso applichi come prima funzione htmlspecialchars
    mentre nel secondo caso la applichi per ultima.

    Inoltre nel primo caso vi sono funzioni annidate nel secondo no, quindi:
    nel primo caso il risultato della funzione annidata è prarametro per quella "esterna"
    mentre nel secondo caso applichi distintamente (e in modo insensato) ciascuna funzione sulla variabile $_POST['nome']. Faccio un esempio:
    Codice PHP:
    // abbiamo due funzioni
    // questa ci restituisce il doppio del numero
    function doppio($num){ return ($num*2); }
    // questa ci restituisce il numero sotratto di tre
    function menotre($num){ return ($num-3); }

    $numero 5;
    // con funzioni annidate
    $risultato_1 menotre(doppio($numero)); // (5*2)-3 = 7
    // se facciamo l'inverso non è la stessa cosa
    $risultato_2 doppio(menotre($numero)); // (5-3)*2 = 4
    // se invece le applichiamo isolatamente 
    // ogni risultato è indipendente dagli altri 
    $risultato_3 doppio($numero); // 5*2 = 10
    $risultato_4 menotre($numero); // 5-3 = 2 

    // per ottenere la stesso di $risultato_1 dovremo fare
    // prima il doppio
    $primo_step doppio($numero); // 10
    // NB: il parametro è quello ottenuto dal primo step!! cioè 10
    // così avremo 10-3 = 7 (come $risultato_1)
    $secondo_step menotre($primo_step); 
    ERGO:
    - l'ordine di applicazione (ovviamente) è rilevante
    - bada ai parametri che passi alle funzioni

    -------------------
    Nel tuo caso specifico per far equivalere i due codici (che sottolineo sono pessimi) il secondo dovrebbe essere:
    Codice PHP:
    $nome htmlspecialchars($_POST['nome']);
    $nome addslashes($nome);
    $nome stripslashes($nome); 
    $nome mysql_escape_string($nome); 
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    No ma a parte che il metodo e' fondamentalmente sbagliato, qual e' il senso di aggiungere gli slash per poi toglierli subito dopo?

    La sicurezza si ottiene notoriamente buttando insieme funzioni a caso

  4. #4
    Originariamente inviato da k.b
    No ma a parte che il metodo e' fondamentalmente sbagliato, qual e' il senso di aggiungere gli slash per poi toglierli subito dopo?

    La sicurezza si ottiene notoriamente buttando insieme funzioni a caso
    stra-quoto...
    io avevo focalizzato l'attenzione su un altro aspetto...
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  5. #5
    si ho capito che il codice è pessimo non c'è bisogno di scriverlo 100 volte che è scritto male, ma infatti per questo ho postato, ma quindi la sequenza come dovrebbe essere?cioè dove posso trovare una guida o articolo?

  6. #6
    non è questione di guida o articolo.

    c'è php.net che spiega singolarmente le funzioni.

    - hai attivato il magic_quotes_gpc?
    disattivalo.

    - devi inserire dei dati in mysql?
    applica mysql_real_escape_string() e basta

    - hai problemi con i caratteri accentati in mysql?
    scegli uno charset adeguato... ad esempio latin_1

    - hai fatto una query select e devi rimuovere gli escape che erano presenti in mysql?
    stripslashes

    - devi stampare a video del codice immunizzando eventuale codice maligno?
    applica htmlspecialchars() oppure htmlentities()

    ERGO: ogni funzione ha uno scopo e per capirlo bisogna conoscerle...
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.