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?
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.
Plus d'informations que vous exposez plus vulnérables Vous êtes, quelle que soit sa priorité dans vos politiques de sécurité.