2015-08-02 9 views
5

Ho un piccolo database MySQL con poche centinaia di righe (tutto nel testo, senza immagini). Sto richiedendo tutte le righe usando iQuery e faccio tutto il filtraggio al client. Codice iQuery è la seguente:C'è qualche rischio di iniezione se nessun input dell'utente è stato inviato al database?

$(document).ready(function() { 
    $.get("alldata.php", function(data){ 
     $('#result').text(data); 
    }); 
}); 

Sul lato server, il "alldata.php" ha il seguente codice e passare i dati in JSON torna a iQuery:

$sql = "SELECT title FROM mydatabase"; 
$result = mysqli_query($conn, $sql); 
$arr = array(); 

while($row = mysqli_fetch_assoc($result)){ 
    $row_array['Title'] =$row['title']; 
    array_push($arr,$row_array); 
} 
mysqli_close($conn); 

echo json_encode($arr); 

Mi sembra ci non vi sarà alcun rischio di iniezione poiché non vi è alcun input dell'utente inviato al database. Ho ragione o torto? Grazie mille per il tuo contributo!

+2

C'è una query, una selezione. Ma questo non comporta alcun input da parte dell'utente, non c'è alcun modo per un utente malintenzionato di iniettare qualcosa in effetti. –

+0

Buon punto! Il titolo è stato aggiornato di conseguenza. – LearnAWK

risposta

7

Hai ragione. La tua istruzione SQL non include parametri al di fuori di se stessa, quindi non esiste un vettore per l'iniezione. Mentre gli attacchi di iniezione SONO possibili su istruzioni SELECT, nel tuo caso la query non viene creata dinamicamente, quindi non può essere manomessa.

3

Si è sicuri poiché non vi è alcun input da parte dell'utente. Un utente malintenzionato ha bisogno dell'input dell'utente per iniettare una query. Quindi non fidarti mai dell'input dell'utente.