Possibilità di iniezione SQL mediante valori statici o predefiniti

0

L'uso delle variabili dirette è vulnerabile a SQL injection. Quindi per prevenire gli attacchi utilizziamo i parametri.

$result->bindParam(":id",$_POST['id'],PDO::PARAM_INT)

ma sono confuso riguardo la seguente situazione, devo usare parametro o parametro non rotolare qui.

Situazione-1

Quando si chiama la funzione

function fetch($id, $subid){
    $result=$con->prepare("SELECT * FROM......WHERE id=$id AND subid=$subid")
    $result->execute();
    .....
}

Se inseriamo il valore statico nel codice, nessun input dell'utente, per quanto riguarda l'iniezione qui?

fetch(3,4);

Situazione-2

La variabile proviene da un'altra query

//first-query
$id = $row['id']

//second-query where first query variable is used
$result1=$con->prepare("SELECT * FROM......WHERE id=$id")

//Another Example

$id=$con->lastInsertId();    
$result1=$con->prepare("SELECT * FROM......WHERE id=$id")

Qui usiamo variabile associata a un database diretto.

    
posta Dipak 08.08.2018 - 15:06
fonte

1 risposta

3

Situazione-1

È una funzione . Il che significa che potrebbe essere chiamato con parametri diversi e non è possibile prevedere se questi saranno predefiniti o meno.

Inoltre, non capisco proprio perché te lo stai chiedendo. È una dichiarazione preparata quella difficile da usare per indurti a cercare una scorciatoia per un caso d'uso deliberatamente raro?

Quindi chiedi come rendere più semplice l'uso di una dichiarazione preparata. Non è una scienza missilistica e renderà il tuo codice semplice come

function fetch($id, $subid){
    $sql = "SELECT * FROM...WHERE id=? AND subid=?";
    return $this->con->run($sql, [$id,$subid])->fetch();
}

quindi non ci sarà alcun motivo per evitare una dichiarazione preparata.

Situazione-2

Questo è chiamato " Iniezione SQL del secondo ordine ", ed è proprio la ragione per usare una dichiarazione preparata per qualsiasi variabile , indipendentemente dalla fonte.

    
risposta data 08.08.2018 - 15:18
fonte

Leggi altre domande sui tag