web-dev-qa-db-ja.com

HTMLでのデータベースフィールド名の公開

HTMLフォーム名が最終的に更新するデータベースフィールド名とまったく同じ場合、サーバー側のコードを最適化する機会がよくあります。

明らかに欠点は、データベース構造に関する情報が一目でわかることです。

もちろん、この情報は他の弱点が存在する場合にのみ役立ちますが、プレートに情報を渡すように見えます。

これが低リスクであると人々が考えるかどうか、そして心配することなくこのようにフィールド名を公開するかどうかを知りたいです。

17
Imag1ne

これを行うことは非常に一般的です。お気づきのとおり、コードをシンプルに保つことには大きなメリットがあります。

SQLインジェクションの脆弱性がある場合、攻撃者はINFORMATION_SCHEMAを使用してデータベース構造を突き止めることができます。したがって、データベース構造を非表示にしても、大きな効果はありません。

この領域のもう1つの懸念は 大量割り当ての脆弱性 です。おそらく、ユーザーはユーザーの詳細(名前、電子メール、パスワードなど)の更新を許可されています。ただし、「is_admin」フィールドを更新することはできません。フォームフィールドをSQLステートメントに自動的にルーティングするコードを使用すると、このような脆弱性が発生する場合があります。

22
paj28

攻撃者にDBフィールド名を開示してセキュリティを破壊する一般的なシナリオの1つは、SQLインジェクションです。この場合、攻撃者はshow tablesselect * from INFORMATION_SCHEMA.TABLESなどを実行してデータベース構造全体を取得できない可能性があります。彼は読み取りアクセスが非常に制限されている可能性があります(例: ブラインドSQLインジェクション )。このような場合にDB構造を理解するには、多少の時間と 知識 が必要になる場合があります。

攻撃者にDBテーブルとフィールドについてのヒントを与えると、彼はあなたが提供した名前を使っていくつかのインジェクションを試すかもしれません。攻撃ははるかに速くなり、攻撃者の資格が少なくて済み、ログでの検出がはるかに困難になります。

4

データベースのフィールド名を公開することは良い習慣ではないと思いますが、フィールド自体にそれほどリスクはありません。これらのフィールドにアクセスするには、データベースの資格情報をハックする必要があり、資格情報が盗まれたらそれは盗まれるからです。彼らがすでに分野を知っているかどうかにかかわらず、彼らは自分たちが望むものを自分で探索します。

とはいえ、公開されたデータベースフィールドは、他の種類のセキュリティ攻撃に使用される可能性があります。 (情報収集段階)

結論は次のとおりです。必要がない場合は、フィールド名を公開しないでください。

0
Ijaz Ahmad Khan