Nel nostro livello di accesso al DB abbiamo una creazione di query dinamica. Per esempio, abbiamo il metodo seguito per la costruzione di una parte di una clausola ORDER BY
:Prevenzione dell'iniezione SQL nella clausola ORDER BY
protected string BuildSortString(string sortColumn, string sortDirection, string defaultColumn)
{
if (String.IsNullOrEmpty(sortColumn))
{
return defaultColumn;
}
return String.Format("{0} {1}", sortColumn, sortDirection);
}
Il problema è, sortColumn
e sortDirection
entrambi provengono dall'esterno come stringhe, così naturalmente qualcosa deve essere fatto per prevenire eventuali attacchi di iniezione . Qualcuno ha idea di come questo possa essere fatto?
+1, aggiungerò un accento personale su "in un pizzico assoluto", che normalmente vuole whitelist in modo da avere il controllo su quali campi può essere ordinato da (o interrogato per quella materia). Lasciarlo al cliente per decidere significa che dovrai analizzare possibilmente più client per scoprire quali query ottimizzare. Ci sono stato, fatto questo, niente di divertente: -/ –
Per la prima occhiata è possibile creare una white-list nel nostro caso. Faremo un tentativo, grazie Marco. – Andrei