Quale DBMS di classe enterprise consente la proibizione di (No) commenti SQL?

1

Questa domanda potrebbe essere rinominata "Vieteresti i commenti SQL all'interno delle transazioni eviterà alcune iniezioni SQL?", ma mi piacerebbe sapere se alcuni DBMS lo consentono per primi.

L'obiettivo è ridurre la superficie di attacco delle applicazioni legacy. Capisco che tutti gli input dell'utente dovrebbero essere disinfettati prima di essere utilizzati in un'istruzione SQL. Il fatto è che a volte non puoi.

Ecco come vorrei eseguire (No) query SQL:

BEGIN TRANSACTION WITH OPTIONS allow_comments=false; [non sanitized sql statement] COMMIT;

Ora dite che sql contiene '; DROP DATABASE; -- . La parte -- genera un'eccezione SQL perché l'opzione allow_comments è impostata su false . Poiché questa istruzione è stata racchiusa in una transazione, non si impegnerebbe mai e la parte DROP DATABASE; non verrebbe mai eseguita.

Potremmo anche impostare un trigger per avvertirci del tentativo di iniezione. Dovrebbe funzionare con Hibernate ORM che non invia commenti SQL per impostazione predefinita.

Forse il trigger potrebbe anche trasformare l'istruzione iniziale con qualcosa che l'applicazione può gestire (SELECT senza risultati, ecc.), quindi l'applicazione potrebbe agire come se l'input fosse stato sterilizzato.

Mi rendo conto che non è a prova di proiettile in quanto alcune iniezioni SQL non usano commenti. Questo è qualcosa che possiamo attenuare una volta ricevuto l'avviso dal database (divieto utente, IP ...).

Temo che non sia qualcosa che gli sviluppatori di database implementerebbero, perché porterebbe un falso senso di sicurezza. Penso che se aiuta a prevenire anche una piccola frazione di iniezioni, è qualcosa che tutti potrebbero usare.

Che ne pensi?

DBMS: Oracle, MySQL, MS SQL, PostgreSQL ... Dato che anche le iniezioni di database sono possibili su database NoSQL, sono curioso anche di queste.

Casi d'uso: sistemi legacy il cui codice sorgente è intoccabile o perso.

    
posta pyb 10.06.2014 - 18:17
fonte

0 risposte

Leggi altre domande sui tag