Visualizzazione dei risultati da 1 a 7 su 7

Discussione: apici in Mysql

  1. #1

    apici in Mysql

    codice:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'alunno arrivato in ritardo oppure ne consente l'uscita anticipata rispetto al no' at line 1
    Metto un testo con l'apice e mi da errore.

    Come devo trattare l'apice negli inserimenti MySQL. Il campo e text

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    codice:
    $query = "INSERT INTO tabella (campo) VALUES ('".addslashes($val)."');
    Attenzione, usa sempre addslashes (o mysql_escape_string che è propria di mysql), anche quando fai le select, altrimenti un utente smaliziato usando la sintassi di mysql potrebbe modificare la query a suo piacimento.

    Un esempio di questo può essere quando a seguito di in un form di login esegui (sbagliando!) una query del genere:

    codice:
    SELECT * FROM utenti WHERE user='$user' && pass='$pass'
    se io nel tuo form inserisco come utente:

    pippo

    e come pass

    "prot' OR 1=1 --"

    modifico la query in modo che risulti cosi:

    codice:
    SELECT * FROM utenti WHERE user='pippo' && pass='prot' OR 1=1 --'
    (il -- è il commento in mysql, escludo quindi tutto quello che viene dopo).

    Se vuoi approfondire l'argomento cerca "sql injection" in google

    ciao

  3. #3
    Quindi mi conviene metterlo in tutti i form?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Assolutamente si
    Ti consiglio la lettura di questa semplice guida
    http://php.html.it/guide/leggi/121/g...urezza-di-php/
    per rendere meno vulnerabile la tua applicazione php quando ci sono passaggi di variabili in post o get

  5. #5
    Ok, grazie.
    Comincio a Studiarmelo :master: :master: :master: :master:

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    La cosa migliore spesso è validare l'input inserito dall'utente tramite espressione regolare prima di effettuare i query
    Se ad esempio hai un campo nick che viene da un form e pretendi che un nick sia composto solo da lettere, numeri e il carattere "_" e che il primo carattere sia una lettera e in tutto siano da 4 a 20 caratteri puoi fare una cosa del genere
    Codice PHP:
    if(isset($_POST["nick"]))
    {
        if(!
    preg_match("/^[a-zA-Z][a-zA-Z0-9_]{3,19}$/",$_POST["nick"]))
            echo 
    "Nick non valido";
        else {
            
    // Elaborazione
        
    }

    In questo modo hai la garanzia che l'input dell'utente non possa essere dannoso, ma che segua delle regole precise

    Se ad esempio metto nel tuo forum questo messaggio
    Codice PHP:
    <script language="javascript">while(truealert("Adessso sei fregato");</script> 
    Ogni volta che un utente cercherà di accedere alla pagina con il messaggio si troverà ad avere eternamente un alert che riappare ogni volta che clicca ok. Chiuderà il browser con ctrl+alt+canc e non lo vedrai più.

    Tutti gli input degli utenti devono quindi essere controllati in qualche modo e resi "innocui". Le funzioni di solito utili sono
    preg_match
    strip_tags
    htmlentities
    addslashes

    Il link che ti ho dato prima ha molti suggerimenti in tal senso

  7. #7
    soluzioni:

    1)insert into [nome tavola] values (x,y,z,concat('...consente l',chr(39),'uscita anticipata...'))

    2)insert into [nome tavola] values (x,y,z,"...consente l'uscita anticipata...")

    3)insert into [nome tavola] values (x,y,z,'...consente l&#039uscita anticipata...')

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.