Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    Utilizzo della funzione escapeshellcmd

    Salve ragazzi, una semplice domanda.
    Per "blindare" i campi di input è meglio utilizzare le funzioni
    addslashes, mysql_escape_real_string... etc.

    oppure questa funzione:

    escapeshellcmd()
    ?

    Poichè ho visto che riescie ad eseguire l'escape di molti caratteri nocivi sia per le shell che per SQL injection e CSS, però non esegue il quoting dei caratteri.
    Magari potrei associargli la funzione htmlentities per il quotes?

    Cosa mi consigliate?

    Grazie mille
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Se devi lavorare con MySQL usa mysql_real_escape_string().
    Se devi lavorare con la shell usa escapeshellcmd()/escapeshellarg().

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    filippo.toso, grazie per la tua risposta immediata.

    Ho postato questo mio dubbio, perchè ho visto una guida proprio su questo sito che riguarda la sicurezza in PHP.

    ho visto che la funzione escapeshellcmd, riesce ad eseguire l'escape di molti caratteri nocivi, del tipo:

    % <> $,etc...

    Però non esegue il quoting(cosa che fa invece htmlentities).

    Quindi stavo pensando , non è meglio utilizzare questa funzione(escapeshellcmd) associandola ad htmlentities?

    Facendo una cosa così:

    Codice PHP:
    $testo escapeshellcmd(htmlentities($_POST['testo'])); 

    ?


    Grazie!
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Perchè dobvresti farlo?

    Se devi lavorare con la shell ed esiste una funzione escapeshellcmd() che escapes any characters in a string that might be used to trick a shell command into executing arbitrary commands, perchè vuoi modificarne il comportamento?

    Che vantaggio pensi di ottenere?

  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    L'unico vantaggio sarebbe soltanto quello di effettuare l'escape su più caratteri nocivi.

    Quindi a questo punto, tu quali funzioni mi consigli di utilizzare per blindare i campi di input?
    Con i sogni possiamo conoscere il futuro...

  6. #6
    Ti basta il "blindare" i caratteri a seconda dell'utilizzo della stringa su cui vai ad operare.


    Se la stringa deve essere salvata su database prima di salvare utilizzi "mysql_real_escape_string"

    Se la stringa deve essere eseguita su shell prima di eseguirla utilizzi "escapeshellcmd()"/"escapeshellarg()"



    Il "blindare" con "escape..." stringhe che vengono salvate su DB non porta nessun vantaggio a livello ne di protezione ne di altro.

    Come il "blindare" con "mysql_real..." non da vantaggi su stringhe che devono essere eseguite su shell.

    Anzi, forse pensandoci bene, potrebbero causarti degli spiacevoli problemi.

  7. #7
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Grazie mille per aver risposto.

    Potrei associare qualche altra funzione per garantire una maggiore protezione? tipo effettuare il quotes dei caratteri con "htmlentities" facendo una cosa del tipo:

    Codice PHP:
    $testo htmlentities(mysql_escape_real_string($_POST['testo'])); 
    E, ovviamente quando vado ad inserire il contenuto sul database, ho bisogno di utilizzare funzioni inverse per visualizzare a video correttamente la stringa, o il valore inserito sul database?

    tipo inserisco:

    Codice PHP:
    $_POST['testo'] = "L'innominato è un personaggio dei promessi sposi";
    $testo htmlentities(mysql_escape_real_string($_POST['testo']));

    $query "INSERT INTO table (testo) VALUES ($testo)";
    // Eseguo la query.. etc...

    // dopo di chè voglio visualizzare a video, magari in unb altra pagina il contenuto di testo:

    $query "SELECT * FROM table";
    ...
    ...
    ...
    while (
    $row mysql_fetch_array($resutl))
    {
                echo 
    "Testo: " $row['testo'];
    }

    /* Qui devo usare qualche funzione inversa alla mysql_escape_real_string e htmlentities, per visualizzare correttamente la stringa, oppure devo stampare semplicemente, come ho fatto nel while?
    */ 
    Grazie mille.
    Con i sogni possiamo conoscere il futuro...

  8. #8
    Originariamente inviato da gaten
    Potrei associare qualche altra funzione per garantire una maggiore protezione?
    Ma perchè pensi che chi ha sviluppato PHP ha creato una funzione che NON garantisce protezione?

  9. #9
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Filippo, forse mi sono spiegato male.

    Personalmente sò che eseguire il quotes dei caratteri è consigliabile, e poichè la mysql_escape_real_string, non lo esegue, pensavo fosse vantaggioso utilizzare anche htmlentities.

    Ho postato, apposta per togliermi questo dubbio.

    Tu mi consigli qualcosa, riguardo a quello che dicevo nel messaggio precedente?

    Grazie infinitamente!

    Gaten
    Con i sogni possiamo conoscere il futuro...

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.