Esporre i nomi dei campi del database in HTML

17

Spesso vedo opportunità per ottimizzare il codice lato server se i nomi dei moduli HTML sono esattamente uguali ai nomi dei campi del database che eventualmente aggiornano.

Lo svantaggio ovviamente è che questo espone informazioni sulla struttura del database in bella vista.

Ovviamente questa informazione è utile solo se esistono altri punti deboli ma sembra come dare informazioni su un piatto.

Sarei interessato a sapere se le persone pensano che questo sia a basso rischio e se espongono nomi di campi come questo senza preoccuparsi.

    
posta Imag1ne 07.01.2016 - 14:22
fonte

3 risposte

22

È molto comune farlo. Come hai notato, c'è un vantaggio significativo nel mantenere il codice semplice.

Se si dispone di una vulnerabilità di SQL injection, un utente malintenzionato può determinare la struttura del database utilizzando INFORMATION_SCHEMA. Quindi nascondere la struttura del tuo database non ti aiuta molto.

Un'altra preoccupazione in quest'area è Vulnerabilità di assegnazione di massa . Forse un utente può aggiornare i suoi dettagli utente - nome, email, password, ecc. Ma non dovrebbero essere in grado di aggiornare il campo "is_admin". Con il codice che indirizza automaticamente i campi modulo alle istruzioni SQL, a volte possono comparire vulnerabilità come questa.

    
risposta data 07.01.2016 - 15:07
fonte
4

Uno scenario comune in cui la divulgazione dei nomi dei campi DB per l'utente malintenzionato rovina la sicurezza è l'iniezione SQL. In questo caso, l'autore dell'attacco potrebbe non essere in grado di eseguire show tables , select * from INFORMATION_SCHEMA.TABLES e simili, per ottenere l'intera struttura del database. Potrebbe avere un accesso di lettura molto limitato (ad es. iniezione SQL cieca ). Capire la struttura del DB in questi casi potrebbe richiedere del tempo e conoscenza .

Se fornisci agli hunter degli attacchi suggerimenti su tabelle e campi DB, può provare diverse iniezioni usando i nomi che gli hai fornito. L'attacco sarà molto più veloce, richiederà meno qualifiche dall'attaccante e molto più difficile da rilevare nei log.

    
risposta data 07.01.2016 - 15:14
fonte
0

Penso che esporre i nomi dei campi del database non sia una buona pratica, ma non è un alto rischio per i campi stessi, perché per accedere a quei campi, bisogna hackerare le credenziali del database e una volta che le credenziali vengono rubate, allora non importa che conoscono già i campi o no, lo esploreranno da soli quello che vogliono.

Detto questo, i campi del database esposti possono essere utilizzati per qualche altro tipo di attacco di sicurezza. (alla fase di raccolta delle informazioni)

La conclusione è: non esporre mai i nomi dei campi se non è necessario.

    
risposta data 07.01.2016 - 14:41
fonte

Leggi altre domande sui tag