0

ASP.NET 4.5.2 / MVC 5.2.3 にあり、Entity Framework 6 を使用する、私が取り組んでいるアプリケーションのユーザー向けのツールを (再) 開発する必要があります。

このツールは、許可されたユーザーが SQL クエリを編集できるようにし、権限の低いユーザーもそれらを実行できるようにすることを想定しています。Web アプリケーションがイントラネットとしてのみアクセス可能であっても、そのようなツールのセキュリティが心配です。

特定のクエリは のみであり、複数のテーブルでSELECTを持つことができます。JOIN

SQL文字列を1つだけ実行するようにチェックしたり制限したりできるEF6固有の関数はありますSELECTか?
データベース内に s のみを許可された特定のユーザーSELECTがいて、このユーザーとしてそれらのクエリに別の接続を使用する必要がありますか?
そのようなツールのセキュリティについて、私が見落としている可能性があるものは他にありますか?

このツールが愚かであり、存在すべきではないことはわかっていますが、私は決定を担当していません。できるだけ早くそのツールを削除する予定です.

4

1 に答える 1

0

考えがある。利用可能なエンティティとプロパティを定義して、そのようなクエリを作成できます。たとえば、Customer エンティティの場合、ユーザーは Name、Surname、Orders.Items.Name、Orders.OrderDate (ナビゲーション プロパティ) を選択できます。

ユーザーはパラメーターを文字列としてサーバーに送信し、サーバーはパラメーターをラムダ式に変換し (ラムダ式のランタイム コンストラクターを使用)、それを Customers.Select(selectExp).ToList() のようにクエリに添付します。

それは役に立ちますか?

于 2015-05-29T13:23:03.487 に答える