Salve a tutti,
ho un dubbio: ho sentito parlare di sql injection e ho preparato un piccolo script per un amico dove ricercare e ordinare i risultati da un database Mysql.
Vorrei sapere se tale script è sicuro e non è soggetto a violazioni di sicurezza.
Vi posto lo script:
<?php
$conn = mysql_connect("127.0.0.1", "root", "") or die($errConnessione);
mysql_select_db("database") 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="prova.php">
<div align="center">
<table width="51%" border="2">
<tr>
<td width="52%">Marca</td>
<td width="48%"><input name="marca" type="text" id="marca"></td>
</tr>
<tr>
<td>Anno</td>
<td><input name="anno" type="text" id="anno"></td>
</tr>
<tr>
<td>Immagine</td>
<td><input name="immagine" type="text" id="immagine"></td>
</tr>
<tr>
<td>Prezzo</td>
<td><input name="prezzo" type="text" id="prezzo"></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input type="submit" name="Submit" value="Ricerca">
<input type="submit" name="Submit" value="Azzera paramentri di ricerca">
</div></td>
</tr>
</table>
</p></div>
</form>
<?php
@$marca = mysql_real_escape_string($_GET['marca']);
echo $marca;
@$anno = mysql_real_escape_string($_GET['anno']);
echo $anno;
@$immagine = mysql_real_escape_string($_GET['immagine']);
echo $immagine;
@$prezzo = mysql_real_escape_string($_GET['prezzo']);
echo $prezzo;
$were = " WHERE ";
if ($marca != "") {
$were.=" marca= '$marca' AND ";
}
if ($anno != "") {
$were.=" anno= '$anno' AND ";
}
if ($immagine != "") {
$were.=" immagine= '$immagine' AND ";
}
if ($prezzo != "") {
$were.=" prezzo= '$prezzo' 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
}
}
?>
</p>
<?php
mysql_close($conn); //chiudo la connessione
?>
Non sono un programmatore (ed essendo nuovo del forum non so neanche se questa è la sezione giusta dove postare) ma mi sono cimentato per la prima volta nella realizzazione di questo script..l'ho testato e funziona ma non so se è sicuro..
aspetto una vostra risposta,
Saluti.![]()

.
Rispondi quotando