Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264

    evitare SQL injection...

    ciao a tutti

    se sul mio server il "magic_quotes" è impostato su "off", è sufficiente trattare le variabili con "mysql_real_escape_string" per evitare SQL injection in fase di update su mysql?


  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    in linea di massima sì, fermo restando che la "logica" di implementazione delle query deve comunque essere ponderata... se insomma le query vengono formate in maniera scorretta è chiaro che si potrebbe comunque andare incontro a problemi, ma per quanto riguarda la vera e propria "SQL injection" puoi stare abbastanza tranquillo se presti attenzione in particolare agli apici.

  3. #3
    puoi anche filtrare i dati che ricevi in input usando la funzione addslashes() a patto che poi quando estrai i dati usi la funzione opposta stripslashes()

    oppure puoi filtrare i dati con htmlentities() inserendo il parametro ENT_QUOTES così da trasformare sie gli apici singoli che quelli doppi nei relativi caratteri speciali
    uh? eh ? cosa?

  4. #4
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264
    Purtroppo sul mio server "magic_quotes" è impostato su "on"....

    ho chiesto al provider di cambiare l'impostazione.... altrimenti come posso fare?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    in che senso "purtroppo"? in questo caso i dati inviati via FORM sono automaticamente "escapati"... se ti vanno bene usali così, altrimenti usa stripslashes e poi gestili autonomamente (in realtà sarebbe giusto verificare l'impostazione del settaggio e in base al suo valore decidere cosa fare, così se il provider dovesse modificare "inaspettatamente" la configurazione non avresti problemi)

  6. #6
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264
    Originariamente inviato da eiyen
    in che senso "purtroppo"? in questo caso i dati inviati via FORM sono automaticamente "escapati"... se ti vanno bene usali così, altrimenti usa stripslashes e poi gestili autonomamente (in realtà sarebbe giusto verificare l'impostazione del settaggio e in base al suo valore decidere cosa fare, così se il provider dovesse modificare "inaspettatamente" la configurazione non avresti problemi)

    sulla pagina di php.net trovo:

    Note: If magic_quotes_gpc is enabled, first apply stripslashes() to the data. Using this function on data which has already been escaped will escape the data twice.

    Note: If this function is not used to escape data, the query is vulnerable to SQL Injection Attacks.


    Vuol quindi dire che se "magic_quotes_gpc" è attivato, il solo uso di "mysql_real_escape_string" non garantisce contro le injection...

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    No, ti spiego...

    Originariamente inviato da henry78
    Note: If magic_quotes_gpc is enabled, first apply stripslashes() to the data. Using this function on data which has already been escaped will escape the data twice.
    questo vuol dire che se il flag è attivo devi usare - come ti dicevo - la funzione stripslashes() per recuperare i dati in formato "normale", senza i codici di escape (se ti occorre)


    Originariamente inviato da henry78
    Note: If this function is not used to escape data, the query is vulnerable to SQL Injection Attacks.
    Questo significa invece che se il flag non è attivo sei esposto a SQL Injection SE NON INTERVIENI IN QUALCHE MODO (per esempio con mysql_real_escape_string())

  8. #8
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264
    Originariamente inviato da eiyen
    No, ti spiego...


    questo vuol dire che se il flag è attivo devi usare - come ti dicevo - la funzione stripslashes() per recuperare i dati in formato "normale", senza i codici di escape (se ti occorre)



    Questo significa invece che se il flag non è attivo sei esposto a SQL Injection SE NON INTERVIENI IN QUALCHE MODO (per esempio con mysql_real_escape_string())

    grazie 1000 per la spiegazione

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prego (per la mia parte)!

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.