• User Attivo

    aiuto query

    Salve a tutti,

    forse è banale, ma non riesco a capire come si fa:

    ho un link di questo tipo:

    localhost/studio/admin/gallery/crea_gallery.php?id=14

    che richiama questa view:

    [PHP]
    <?php include("../config.php"); ?>
    <form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file[]" multiple>
    <input name='id' type='hidden' value="<?php print $_GET['id']?>">
    <input name="invia" type="submit" value="Carica i file" />
    </form>

    <?php
    $id_articolo = $_GET['id'];
    echo $id_articolo."<br /><br /><br /><br />";
    ?>

    <?php
    $sql = "SELECT * FROM gallery WHERE id_articolo==$id_articolo";
    $ret = mysqli_query( $db, $sql );
    while ($row = mysqli_fetch_assoc($ret)){
    print "".$row['id']."";
    print "<br />";
    print "".$row['foto']."";
    print "<br />";
    print "".$row['id_articolo']."";
    print "<br />";
    }
    ?>
    [/PHP]

    non funziona questa query:

    [PHP]
    SELECT * FROM gallery WHERE id_articolo==$id_articolo
    [/PHP]

    da quest'errore:
    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /Applications/MAMP/htdocs/studio/admin/gallery/crea_gallery.php on line 16

    di fatto vorrei che mi stampasse le foto che hanno come id_articolo quello dell'url.

    spero di essermi spiegato bene
    ringrazio in anticipo per le risposte
    buona serata


  • User Attivo

    Nel PHP l'assegnazione di un valore si fa con un singolo segno di "uguale" mentre un confronto di uguaglianza si fa con un doppio segno di "uguale".
    In SQL, invece, il confronto di uguaglianza si fa con un singolo segno di "uguale" (inoltre i valori vanno tra virgolette).
    Prova a sostituire

    
    $sql = "SELECT * FROM gallery WHERE id_articolo==$id_articolo";
    
    

    con

    
    $sql = "SELECT * FROM gallery WHERE id_articolo='$id_articolo'";
    
    

    e dovrebbe funzionare tutto.
    Ciao.

    N.B.
    Un codice così come lo stai strutturando manca di tutti gli accorgimenti di filtraggio e validazione. E' da utilizzare esclusivamente in locale a scopo didattico.


  • User Attivo

    ciao oslino,

    funziona, grazie per la delucidazione;

    cosa intendi con "manca di tutti gli accorgimenti di filtraggio e validazione"?

    penso tu stia parlando di sicurezza,

    prova a spiegarmi.

    ciao e buon week end


  • User Attivo

    Semplicemente è vulnerabile agli attacchi SQL-Injection e XSS.
    Avvia il tuo server.

    SQL-Injection
    Prova a sostituire nella barra degli indirizzi

    
    localhost/studio/admin/gallery/crea_gallery.php?id=14
    
    

    con

    
    localhost/studio/admin/gallery/crea_gallery.php?id='
    
    

    e vedrai che ti darà un errore (segno che lo script è vulnerabile).

    Se poi scrivi

    
    localhost/studio/admin/gallery/crea_gallery.php?id=a OR 1=1--
    
    

    vedrai che ti mostrerà tutti gli id, le foto e id_articolo di tutti.

    Se invece scrivi (non farlo!!!)

    
    localhost/studio/admin/gallery/crea_gallery.php?id=\'; DROP TABLE gallery --
    
    

    ti cancellerà la tabella gallery. Volendo si può anche cancellare l'intero database.

    XSS
    Metti nella barra degli indirizzi questo URL

    
    localhost/studio/admin/gallery/crea_gallery.php?id=<script>alert('Questo script e vulnerabile agli attacchi XSS!');</script>
    
    

    Ti si aprirà un alert Javascript con scritto "Questo script è vulnerabile agli attacchi XSS!'

    Tutto questo lo potrebbe fare chiunque dal proprio pc di casa una volta che il tuo sito fosse pubblico.
    Trovi ulteriori informazioni e soluzioni su Google.


  • User Attivo

    Grazie mille oslino,

    i tuoi consigli sono sempre utili;

    sarebbe un amministrazione, per cui lo vedrei solo io quello script,

    però grazie del consiglio;

    ci sono altre cose che dovrei sapere riguardo la sicurezza?

    buona serata
    grazie ancora


  • User Attivo

    Sì, toglierti la convinzione che alcuni script puoi vederli solo te. :quote:
    😉


  • User Attivo

    :D:D:D

    😮

    ok terrò presente Oslino!

    ma come faccio a rendere sicuri i miei script?


  • User Attivo

    Non crederai mica che ti scriva un post sui metodi minimi per rendere sicuro uno script??? :dotto: Dai... non esageriamo!
    Se cerchi su google sql injection, xss, xsfr, e sicurezza degli script e db in genere trovi quello che vuoi... basta sbattersi un po' e aver voglia di leggere.


  • User Attivo

    Ok oslino! Grazie mille!