Va bene rivelare i nomi delle tabelle del database?

32

Sto sviluppando un'applicazione web che utilizza il database. Devo eseguire alcune operazioni che richiedono i nomi delle tabelle del database e lo schema della tabella db. Sarà sicuro se invio questo tipo di informazioni al lato client (JavaScript tramite JSON) o dovrei conservare tali informazioni sul lato server della mia applicazione?

    
posta Krystian 06.05.2013 - 10:11
fonte

4 risposte

52

Pensaci in questo modo

  • Da un lato, non c'è niente di sbagliato in questo. Se la tua applicazione è abbastanza sicura contro SQL Injection , allora un utente malintenzionato non sarà in grado di fare molto con quelle informazioni. A meno che tu non stia nominando le tue tabelle table_2231 e le tue colonne column_4231 (nel qual caso ti odio), non sarà difficile indovinare i nomi delle tabelle. Se si tratta di un sito Web di notizie, è molto probabile che tu abbia una tabella chiamata articles , oppure se hai un servizio di sottoscrizione avrai tabelle subscribers o users , e così via. Inoltre, se il tuo server è compromesso, un utente malintenzionato individuerà i nomi dei tavoli quasi immediatamente.

  • D'altra parte, se c'è un modo per evitarlo, non è necessario rivelarlo. Se la tua sicurezza è curata, uno strato di oscurità non guasterebbe in quel caso. In effetti, uno strato di oscurità oltre a buone misure di sicurezza è spesso una buona cosa.

Tuttavia, temo che tu stia cercando di fare qualcosa di simile

SELECT * FROM $UNTRUSTED_INPUT WHERE blah = 1

In questo caso, assolutamente no . Non farlo.

    
risposta data 06.05.2013 - 10:29
fonte
16

L'esposizione dei nomi delle tabelle potrebbe avere conseguenze più ampie del previsto. Ad esempio, potresti mettere in difficoltà la tua azienda rivelando nomi di tabelle come deleted_messages , profile_views , single_female_users ecc. La conservazione di tali dati e la privacy degli utenti diventa improvvisamente un argomento di discussione e può costare molto.

Non puoi sempre controllarlo, naturalmente. Un hacker può esporre anche i nomi delle tabelle. Quindi la migliore pratica sarebbe quella di creare tavoli come se fossero pubblici domani, ma evitando di fornire informazioni.

    
risposta data 06.05.2013 - 16:44
fonte
9

Altre informazioni che esponi a te più vulnerabili, indipendentemente dalla sua priorità nelle norme di sicurezza.

    
risposta data 06.05.2013 - 17:15
fonte
2

Puoi segmentare le tue tabelle in sensibili e generali. Le tabelle sensibili non devono essere "Esposte" ma "Aliasizzate". A lungo andare, tuttavia, la tua soluzione è sicura quanto il valore che detiene per la persona interessata ad entrare.

    
risposta data 06.05.2013 - 21:49
fonte