Mysql
 sql >> Database >  >> RDS >> Mysql

Esporre il nome della tabella e i nomi dei campi nell'URL della richiesta

Non ho alcun problema con l'uso degli stessi (o molto simili) nomi nell'URL e nel database - certo, potresti "esporre" i dettagli dell'implementazione, ma se stai scegliendo nomi radicalmente diversi nell'URL e nel DB, tu' probabilmente stai scegliendo nomi sbagliati. Sono anche un fan della denominazione coerente:la comunicazione con programmatori/tester/clienti diventa molto più difficile se tutti chiamano tutto in modo leggermente diverso.

Ciò che mi infastidisce è che stai permettendo all'utente di eseguire query arbitrarie sul tuo database. http://.../index.php?table=users&user_id=1 , dire? Oppure http://.../index.php?table=users&password=password (non che dovresti memorizzare le password in chiaro)? Oppure http://.../index.php?table=users&age=11 ?

Se l'utente connesso al DB ha le stesse autorizzazioni dell'utente seduto davanti al browser web, potrebbe avere senso. In genere, non sarà così, quindi avrai bisogno di un livello che sappia cosa è l'utente e non è autorizzato a vedere, e quel livello è molto più facile da scrivere correttamente inserendo nella whitelist.

(Se hai inserito abbastanza logica nelle stored procedure, potrebbe funzionare, ma le tue stored procedure eseguiranno il hardcode dei nomi delle colonne...)