web-dev-qa-db-fra.com

Est-ce que ça va de révéler les noms de table de la base de données?

Je développe une application Web utilisant la base de données. Je dois faire des opérations qui nécessitent des noms de table de base de données et un schéma de table de base de données. Sera-ce en sécurité si j'envoie ce type d'informations au côté du client (JavaScript via JSON) ou dois-je conserver ces informations sur le côté serveur de ma candidature?

34
Krystian

Pensez-y de cette façon

  • D'une part, il n'y a rien de mal avec ça. Si votre application est suffisamment sécurisée contre Injection SQL , un attaquant ne sera pas capable de faire beaucoup avec ces informations. Sauf si vous nommez vos tables table_2231 et vos colonnes column_4231 (auquel cas je te déteste), ça ne sera pas difficile de deviner les noms de vos tables de toute façon. Si c'est un site Web d'actualité, il est très probable que vous aurez une table appelée articles, ou si vous avez un service d'abonnement, vous aurez des tables subscribers ou users, et bientôt. De plus, si votre serveur est compromis, un attaquant comprendra les noms de table presque immédiatement.

  • D'autre part, s'il y a un moyen de le contourner, il n'est pas nécessaire de le divulguer. Si votre sécurité est prise en charge, une couche d'obscurité ne ferait pas de mal dans ce cas. En fait, une couche d'obscurité au-dessus de bonnes mesures de sécurité est souvent une bonne chose.

Cependant, j'ai bien peur que vous essayiez de faire quelque chose comme ça

SELECT * FROM $UNTRUSTED_INPUT WHERE blah = 1

Dans ce cas, absolument pas . Ne le fais pas.

53
Adi

Plus d'informations que vous exposez plus vulnérables Vous êtes, quelle que soit sa priorité dans vos politiques de sécurité.

9
Paloma Perez