Nome per la sanificazione al momento giusto?

5

Recentemente abbiamo riscontrato un problema sul nostro sito in cui qualcuno ha tentato l'iniezione SQL tramite un cookie (lo chiameremo lastID ). NOC era in delirio e arrabbiato per come il cookie come vettore di attacco potesse essere ignorato. Hanno uno sviluppatore che crea una classe per la gestione dei cookie che sanificherà lastID (e alla fine altri cookie) per verificare che sia numerico.

Tuttavia, penso che questo sia sbagliato. Il problema non era che lastID non fosse numerico, era che la query che lo utilizzava era vulnerabile all'iniezione. Sono responsabile della revisione delle modifiche al codice e desidero sottolineare il fatto che forzare lastID ad essere numerico non è particolarmente utile e forse addirittura indesiderabile.

Esiste un termine o un concetto che descrive la disinfezione al momento giusto (ovvero la disinfezione al tempo di interrogazione piuttosto che al momento del recupero dei cookie) o "eccessivamente igienizzante" (ad es. forzare lastID ad essere numerico) che posso usare per descrivere cosa sta succedendo / dovrebbe accadere nella mia recensione? La seconda parte della legge di Postel sembra applicarsi qui nella mia mente:

Be ... liberal in what you accept

    
posta Explosion Pills 11.01.2013 - 17:53
fonte

3 risposte

8

Hai ragione. Correggi tutte le tue domande su istruzioni preparate a prova di iniezione e smetti di preoccuparti dei dati forniti. Il tentativo di disinfettare gli input per essere interpolati direttamente in istruzioni SQL porta a applicazioni Web che rifiutano i cognomi contenenti gli apostrofi o le password contenenti determinati caratteri speciali.

A proposito, solo perché hai ragione non significa che sarai in grado di convincere NOC. Buona fortuna.

    
risposta data 11.01.2013 - 18:05
fonte
5

Vorrei semplicemente sottolineare che la vulnerabilità si trova nella procedura del database che può essere sfruttata da SQL Injection. Il cookie è semplicemente un vettore di attacco .

Sebbene sia importante prendersi cura dei vettori di attacco noti, la soluzione più completa è quella di correggere la vulnerabilità all'origine . Questo risolverà entrambi il problema immediato del vettore di attacco dei cookie e di altri vettori di attacco sconosciuti (possibilmente futuri).

    
risposta data 11.01.2013 - 19:06
fonte
3

Hai decisamente ragione. Penso che tu stia effettivamente colpendo due concetti.

  1. BACIO. (Keep It Simple) Il principio base è che si utilizza la soluzione più semplice che risolve il problema. ( Rendere lastID numerico in realtà non risolve il problema , solo quel caso particolare)

  2. A SECCO. (Non ripeterlo) Se ci fosse un altro posto dove questa query è stata eseguita con qualche altro input di lastID, dovresti risolvere anche il problema dell'iniezione SQL. Correggi la query e viene risolta per tutti i percorsi di esecuzione.

Inoltre, la soluzione di imporre lastID come numerico è utilizzando il livello di astrazione errato .

    
risposta data 11.01.2013 - 18:48
fonte

Leggi altre domande sui tag