0

ユーザーが特定のアクションを実行する権限があるかどうかをデータベースで検証する必要がありますか?

2 つの例:

1) ユーザーは最大 30 チームに登録されており、これらのチームのスコアシートのみを表示できます。ユーザー ID とチーム ID をストアド プロシージャに渡し、ユーザーがスコアシートを表示する権限がある場合にのみスコアシートをフェッチします。teamid のみを渡して、すべてのチームのユーザーが登録されていることを事前に確認する方が適切ですか? 両方やるべきですか?

2)現在、投稿者のユーザーIDと削除するコメントのコメントIDを渡しています。両方の基準が満たされた場合にのみコメントを削除しています-ユーザーIDが投稿者IDに一致し、コメントIDがコメントIDに一致します-作成するだけですユーザーが他の誰かのコメントではなく、自分のコメントを削除していることを確認してください。それはやり過ぎですか?

4

3 に答える 3

0

検証の複数のレイヤーがベストプラクティスであり、メソッドによって追加のオーバーヘッドが発生することはないようです。データベースへの接続を一度制限するようにしてください。データベースクエリを実行する上で最もコストのかかる部分は、接続とカーソルです。

http://msdn.microsoft.com/en-us/library/aa174437%28v=sql.80%29.aspx

于 2012-12-07T05:49:35.220 に答える
0

フロントエンドは、考えられる可能性のあるアクセス制限や承認を実装するための、より使いやすい (ライブラリ、フレームワーク、ベスト プラクティス) 環境です。データベース内に別のレイヤーを追加すると、複雑さが増し、アクセス制限の実装が重複するだけです。

クライアントがデータベースに直接接続してコマンドを実行する場合にのみ、それを行うことを検討します。

そのため、アプリケーションによって提供される ID に依存し、ユーザー入力のサニタイズと健全な認証モデルの実装にエネルギーを費やしてください。必要になります。

于 2012-12-07T05:57:49.517 に答える
0

セキュリティの専門家は、いくらセキュリティを確保しても十分ではないと教えてくれます。しかし同時に、アプリケーションのパフォーマンスに影響を与えることになるセキュリティと不必要な保護層のバランスを見つける必要があります。

最初に2 番目の質問に回答します。特定のユーザーによるすべてのコメントを誤って削除しないように、 userid と commentid の両方を渡し、両方を一致させることをお勧めます

1 番目の質問に移ります。私が理解しているように、チームの一部のユーザーのみがチームのスコアシートを表示できるようにしたいと考えていますよね? そのためには、ユーザーが所属するすべてのチームのteamidのみを渡します。ここでの承認の意味がわかりません!

注: 私は理論的な観点からあなたの質問に答えましたが、あなたのTable 構造やStored Proceduresに書かれている内容についてはわかりません。

于 2012-12-07T05:55:46.867 に答える