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

    Sql injection - Consigli per difendermi!!!

    Salve a tutti,

    Sto creando un sito per un amico e siccome ho creato 2 select dipendenti fra di loro che interrogano e filtrano un database Mysql, vorrei sapere da Voi esperti, quale migliorie apportare allo script per poterlo rendere più sicuro.

    Vi linco il sito che è già online e poi vi posto il codice.

    Grazie mille a tutti.

    xyz

    Prima parte:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Moto di GAZZA MOTO</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="gazza-home.css">
    <!--[if IE]>
    <link rel="stylesheet" href="gazza-home-explorer.css" type="text/css" />
    <![endif]-->
    <title>Ordinare dati di una tabella - Esempio JavaScript scaricato da HTML.it</title>
    <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="it" />
    <meta name="Robots" content="All" />
    <meta name="Description" content="HTML.it - il sito italiano sul Web publishing" />
    <meta name="Keywords" content="Lo script permette di ordinare i dati di una tabella." />
    <meta name="Owner" content="HTML.it srl" />
    <meta name="Author" content="HTML.it srl" />
    <meta name="Copyright" content="HTML.it srl" />
    <script type="text/javascript" language="javascript">
    function Marca() {
    var conta = document.form1.marca.value;
    location.href="index.php?marca="+conta+""
    }
    </script>
    </head>
    <body>
    <div id="mother">
    <div id="main">
    <div id="css_menu_13">
    <ul>[*]Home
    <li id="active">Moto[*]Shop[*]Officina[*]Contatti[/list]
    </div>



    <div id="elenco_moto"align="center">
    <?php
    include_once 'db_config.php';
    $conn = mysql_connect($host, $user, $password) or die($errConnessione);
    mysql_select_db($db) or die($errSelezione);
    // Controllo se esite gia il numero di pagina, altrimenti lo setto a 1
    @$pag = mysql_real_escape_string($_GET["pag"]);
    if (isset($pag) == false || is_numeric($pag) == false || $pag < 1) {
    $pag = 1;
    }
    // Genero le variabili che stanno a rappresentare quali record da estrarre dal DB
    $fine = 2;
    $inizio = ($pag - 1) * $fine;
    ?>
    <form name="form1" method="get" action="index.php">
    <div align="center">
    <table width="51%" border="2">
    <tr>
    <td width="52%">Marca</td>
    <td width="48%">
    <?php
    if (empty($_GET['marca'])) {
    $query = "SELECT DISTINCT marca FROM prova";
    $rs = mysql_query($query) or die(mysql_error());
    $num = mysql_num_rows($rs);
    echo "<select name=\"marca\" onchange=\"document.form1.submit()\" >";
    echo"<option value=\"\">---Seleziona una opzione---</option>";
    for ($i = 0; $i < $num; $i++) {
    while ($results = mysql_fetch_array($rs)) {
    echo "<option value=\"$results[marca]\" >$results[marca]</option>";
    }
    }
    echo"</select>";
    } else {
    @$marca = mysql_real_escape_string($_GET['marca']);
    $query = "SELECT DISTINCT marca FROM prova ";
    $rs = mysql_query($query) or die(mysql_error());
    $num = mysql_num_rows($rs);
    echo "<select name=\"marca\" onchange=\"Marca()\" >";
    echo"<option value=\"\">---Seleziona una opzione---</option>";
    for ($i = 0; $i < $num; $i++) {
    while ($results = mysql_fetch_array($rs)) {
    if ($results[marca] == $_GET['marca']) {
    echo "<option selected=\"selected\" value=\"$results[$i]\" >$results[$i]</option>";
    }
    else{
    echo "<option value=\"$results[$i]\" >$results[$i]</option>";
    }
    }
    }
    echo"</select>";
    }
    ?>
    </td>
    </tr>
    <tr>
    <td width="52%">Anno</td>
    <td width="48%">
    <?php
    if (empty($_GET['anno'])) {
    @$marca = mysql_real_escape_string($_GET['marca']);
    $query = "SELECT * FROM prova WHERE marca='$marca'";
    $rs = mysql_query($query) or die(mysql_error());
    $num = mysql_num_rows($rs);
    echo "<select name=\"anno\" onchange=\"document.form1.submit()\">";
    echo"<option value=\"\">---Seleziona una opzione---</option>";
    for ($i = 0; $i < $num; $i++) {
    while ($results = mysql_fetch_array($rs)) {
    echo "<option value=\"$results[anno]\">$results[anno]</option>";
    }
    }
    echo"</select>";
    } else {
    @$marca = mysql_real_escape_string($_GET[marca]);
    $query = "SELECT * FROM prova WHERE marca='$marca'";
    $rs = mysql_query($query) or die(mysql_error());
    $num = mysql_num_rows($rs);
    echo "<select name=\"anno\" onchange=\"document.form1.submit()\" >";
    echo"<option value=\"\">---Seleziona una opzione---</option>";
    for ($i = 0; $i < $num; $i++) {
    while ($results = mysql_fetch_array($rs)) {
    if ($results[anno] == $_GET['anno']) {
    echo "<option selected=\"selected\" value=\"$results[anno]\" >$results[anno]</option>";
    }
    else{
    echo "<option value=\"$results[anno]\" >$results[anno]</option>";

    }
    }
    }
    echo"</select>";
    }
    ?>
    </td>
    </tr>
    <tr>
    <td colspan="4"><div align="center">


    </div></td>
    </tr>
    </table>


    </p></div>
    </form>
    Realizzazione siti internet e posizionamento nei motori di ricerca.

    web-siena.it

  2. #2
    Seconda parte:

    <?php
    @$marca = mysql_real_escape_string($_GET['marca']);
    @$anno = mysql_real_escape_string($_GET['anno']);
    $were = " WHERE ";
    if ($marca != "") {
    $were.=" marca= '$marca' AND ";
    }
    if ($anno != "") {
    $were.=" anno= '$anno' AND ";
    }
    $were.=" 1=1 ";
    $query = "SELECT * FROM prova $were";
    $rs = mysql_query($query) or die(mysql_error());
    $num = mysql_num_rows($rs);
    if ($num == 0)
    echo "<div style=\"text-align:center\">Nessun contatto presente</div>";
    else {
    if (empty($_GET['ordercampo']))
    $_GET['ordercampo'] = "marca";

    if (empty($_GET['order']))
    $_GET['order'] = "desc";

    if ($_GET['order'] == "asc") {
    $ordinaVerso = "desc";
    }
    if ($_GET['order'] == "desc") {
    $ordinaVerso = "asc";
    }
    $query = "SELECT * FROM prova $were order by $_GET[ordercampo] $ordinaVerso ";
    $rs = mysql_query($query) or die(mysql_error());
    ?>
    <table id="tabella_moto" border="1">
    <tr>
    <td align="center">Marca</td>
    <td align="center">Anno</td>
    <td align="center">Immagine</td>
    <td align="center">Prezzo</td>
    </tr>
    <?php
    $query = "SELECT * FROM prova $were order by $_GET[ordercampo] $ordinaVerso LIMIT " . $inizio . ", " . $fine;
    $rs = mysql_query($query) or die(mysql_error());
    while ($results = mysql_fetch_array($rs)) {
    $query = "SELECT * FROM prova $were order by $_GET[ordercampo] $ordinaVerso LIMIT " . $inizio . ", " . $fine;
    echo "<tr>";
    echo "<td width=\"25%\">$results[marca]</td>";
    echo "<td width=\"25%\">$results[anno]</td>";
    echo "<td width=\"25%\">$results[immagine]</td>";
    echo "<td width=\"25%\">$results[prezzo]</td>";
    echo "</tr>";
    $ordercampo = mysql_real_escape_string($_GET['ordercampo']);
    $order = mysql_real_escape_string($_GET['order']);
    } //fine ciclo while
    } //fine else nel caso ci sia almeno un contatto nel comune
    ?>
    </table>
    <?php
    // Trovo il numero di tutti i record presenti nella tabella
    $query = mysql_query("SELECT * FROM prova $were", $conn);
    $quanti = mysql_num_rows($query);
    $intero = $quanti / $fine; //Calcolo il numero di pagine totali
    $intero = ceil($intero);
    ?>






    Pagina <?php echo $pag; ?> di <?php echo $intero; ?></p>


    <?php
    //Effettuo un for che mi scrive tutti i link alle relative pagine
    for ($x = 1; $x < $intero + 1; $x++) {
    if ($x == $pag) {
    ?>
    <?php echo $x; ?> |
    <?php
    } else {
    ?>
    <body bgcolor="yellow">
    <?php echo $x; ?> |
    <?php
    }
    }
    ?>
    <?php
    mysql_close($conn); //chiudo la connessione
    ?>
    </div>
    </div>
    </div>
    </body>
    </html>
    Realizzazione siti internet e posizionamento nei motori di ricerca.

    web-siena.it

  3. #3
    Ciao,

    ok, siamo seri ... pensi realmente che, trovato qualcuno di buon cuore che si legga 2 post di codice, ci riesca a capire qualcosa?

    Esistono i tag PHP e CODE, con i relativi bottoni posti subito sopra la casella del testo del post.

    Riapri un nuovo thread, posta esclusivamente il codice interessato ma soprattutto usa il tag php o il tag code altrimenti non si capirà assolutamente nulla!

    Inoltre se dai ulteriori dettagli sarebbe una cosa buona (per te si intende, altrimenti sarà difficile che qualcuno ti aiuti).

    Per finire, visto che non è affatto necessario, non postare il link al tuo sito.


    Grazie
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.