私の質問は間違っているかもしれませんが、MySQLデータベースにアクセスするWebアプリケーションの設計には疑問があります。
次の会話は私と私の友人の間で起こりました。
友人から、システムのユーザーロールごとに個別のユーザーアカウントを作成するように求められ、管理者ユーザーに対してのみ削除オプションを有効にするように求められました。
+-----------+-----------------+
|User role | Db credential |
+-----------+-----------------+
|Admin | Admin |
+-----------+-----------------+
|User | User |
+-----------+-----------------+
私が言ったように、dbにアクセスするためのユーザーアカウントは1つだけで、他のすべてのものは承認の原則によって実行できます。「Webアプリケーションの開発中は、すべての開発者に複数のdbユーザーアカウントを使用できますが、Webアプリケーションの展開中にはデプロイされたアプリケーションのユーザーアカウントは1つだけです。」
+---------+-------------+
|User role|Db credential|
+---------+-------------+
|Admin | Only one |
+---------+user account +
|User | for web app |
+---------+-------------+
私の友人は、SQLインジェクションを回避するために、彼が言ったようにシステムを設計できると私と議論しました。私はそれを考慮するのは全く間違った議論だと思った。
特にユーザーロールとdbユーザー資格情報を使用してWebアプリケーションを設計する際のベストプラクティスを見つけるのを手伝ってください。私は友達に混乱しています。
通常、データベースにアクセスできるmysqlアカウントは1つだけですが、(セキュリティを強化するために)1つのアプリケーションにアカウントを増やしても意味がありません。システムが危険にさらされると、アプリケーションコードで定義する必要があるため、すべてのログインがリークされるためです。
反対側では、多くのmysqlアカウントを持つ攻撃者に攻撃の可能性を高めます。
したがって、1つのアプリケーションで複数のアカウントを使用するために残されているのは、データベースに対するユーザーアクションにアクセスすることです(編集権限のないユーザーaを制限するなど)。
ユーザーがデータベースに対して行うべきこと(削除a、編集b)は、アプリケーションロジックで処理する必要があります。ユーザーごとの操作アクセスを制限することをお勧めします(たとえば、outfileへの書き込みを許可しないなど)。そのような単純なことを処理しないでください。コスト(ユーザーごとの複数のデータ接続)は、優れたプログラミングロジックよりもはるかに高いと思います。
したがって、複数のアカウントが無意味である場合のセキュリティを強化し、強力なパスワードを持つ1つのアカウントを使用して、プログラミングロジックによって簡単なアクションで編集、削除などを処理できるようにします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加