2008-09-08 19 views
2

私はまだLINQの周りでSQLデータベースにアクセスしようとしています。LINQとデータベースのアクセス許可

データにストアドプロシージャの実行権限のみを持つ必要があると常に教えていました。

選択/挿入/更新/削除はしないでください。

(これが原因で、パフォーマンスとセキュリティのある)

LINQからデータを取得するには、あなたは明らかに選択権限が必要です。私はあなたがLINQでストアドプロシージャを使用することができます知っているが、私は何をポイントに結合することはできません?

私は何かを逃しましたか?

答えて

2

1)私たちはプログラマーであり、DBAファシストではありません。あなたの要件でデータベースが100%ロックダウンされていなければならないとすれば、Linqはあなたのためではありません。私はDBAではないので、パフォーマンス/セキュリティの誇大宣伝の大部分はそれだけだと信じています。 Linqは私のためです。

2)linqで結合を行うことができます。

@Philippe:Linqは、評価を自動的にクエリパラメータに変換するため、SQLインジェクションの保護機能を提供します。ただし、必要なセキュリティレベルとレベルを決定するためには、要件を厳密に評価する必要があります。 Linqはデータベースを扱うのをはるかに簡単にしますが、それはバックバーナーに頑丈なデザインを取り付けることを容易にしますが、これは悪いことです。

0

私は、ストアドプロシージャとインラインSQL/LINQの問題について、Jeff Atwoodと非常に合意しています:Who Needs Stored Procedures, Anyways?

あなたがSPROCs-for-everything群衆にいる場合にJOINを実行したいと思うのはなぜですか? JOINを別のSPROCにラップするべきではありませんか?

LINQは、あなたが話しているような種類のDBを使用するようには設計されていませんでした。静的型のインラインSQLを提供するように設計されています。ただし、LINQ to SQLを使用する場合は、ユーザーのアクセス許可を使用してアクセスを制御できます。

0

セキュリティ上の理由から、ユーザーが入力したデータをクエリに入力しないでください。このルールに固執すると、私は選択の許可を持っているという問題は見当たりません。

1

すべてのデータベースアクセスがストアドプロシージャの後ろにあるかどうかは、アプリケーションと会社のニーズによって異なります。ビューを使用してすべてのデータとストアドプロシージャをすべての更新プログラムに適用するシステムを実装しました。これにより、フロントエンド開発者に適切な場所でSQLクエリを使用させながら、セキュリティとデータベースロジックを集中管理できます。

プログラミングの他の多くのものと同様に、それはプロジェクトのニーズによって異なります。

LinqToSqlはストアドプロシージャをサポートしています。スコット・グーには投稿があります:

http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

関連する問題