web-dev-qa-db-ja.com

データベースのテーブル名を公開しても大丈夫ですか?

データベースを利用したWebアプリケーションを開発しています。データベーステーブル名とデータベーステーブルスキーマを必要とするいくつかの操作を実行する必要があります。この種の情報をクライアント側(JSONを介してJavaScript)に送信する場合、またはアプリケーションのサーバー側にそれらの情報を保持する必要がある場合、それは安全ですか?

34
Krystian

このように考える

  • 一方では、何も問題はありません。アプリケーションが SQLインジェクション に対して十分に安全である場合、攻撃者はその情報で多くのことを行うことはできません。テーブルに名前を付けない限りtable_2231と列column_4231(この場合、私はあなたを嫌います)、とにかくテーブル名を推測するのは難しくありません。ニュースWebサイトの場合、articlesというテーブルがあるか、サブスクリプションサービスがある場合は、subscribersまたはusersがあり、そしてなど。また、サーバーが侵害された場合、攻撃者はほとんどすぐにテーブル名を突き止めます。

  • 一方、回避策があれば、公開する必要はありません。あなたのセキュリティが世話をされている場合、その場合、不明瞭な層が害を及ぼすことはありません。実際、優れたセキュリティ対策に加えて、あいまいなレイヤーを重ねることは、多くの場合良いことです。

しかし、私はあなたがこのようなことをやろうとしていると思います

SELECT * FROM $UNTRUSTED_INPUT WHERE blah = 1

その場合、絶対にありません。しないでください。

53
Adi

テーブル名を公開すると、予想よりも広範な結果が生じる可能性があります。たとえば、deleted_messagesprofile_viewssingle_female_usersなどのテーブル名を開示することで、会社を法的に不利な立場に置く可能性があります。そのデータの保持とユーザーのプライバシーは、突然議論の的になります。そして多くの費用がかかります。

もちろん、それを常に制御できるわけではありません。ハッカーは、テーブル名を公開することもできます。したがって、ベストプラクティスは、明日公開されるようにテーブルを作成することですが、情報を提供することは控えます。

17
Sedat Kapanoglu

セキュリティポリシーにおける彼の優先度に関係なく、より脆弱な自分を公開する情報が増える。

9
Paloma Perez

テーブルを機密と一般にセグメント化できます。機密テーブルは「公開」ではなく「エイリアス」にする必要があります。ただし、長期的に見ると、ソリューションは安全なものであり、その中に入ってみたい人にとって価値があります。

2
Justjyde