2

私はまだLINQに頭を悩ませ、SQLデータベースにアクセスしようとしています。

私はいつも、データに対するストアド プロシージャの実行権限のみを持つべきだと教えられてきました。

選択/挿入/更新/削除を行うべきではありません。

(これはパフォーマンスとセキュリティのためです)

LINQ からデータを取得するには、明らかにアクセス許可を選択する必要があります。ストアド プロシージャを LINQ で使用できることは知っていますが、結合を行うことができないので、何がポイントなのですか?

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

4

4 に答える 4

2

1) 私たちはプログラマーであり、DBA ファシストではありません。データベースを 100% ロックダウンする必要があるという要件がある場合、Linq は適していません。私は DBA ではないので、パフォーマンスやセキュリティに関する誇大広告のほとんどは DBA に過ぎないと思います。Linqは私のためです。

2) linq で結合できます。

@Philippe : Linq は自動的に評価をクエリ パラメータに変換するため、SQL インジェクションに対する保護が提供されます。ただし、要件を綿密に評価して、必要なセキュリティの程度とレベルを判断する必要があります。Linq を使用すると、データベースの処理がはるかに簡単になりますが、セキュリティ設計を後回しにしやすくなります。これは悪いことです。

于 2008-09-08T12:49:51.393 に答える
0

セキュリティ上の理由から、ユーザーが入力したデータをクエリに入力しないでください。このルールに固執すれば、選択権限を持つという問題は見られません。

于 2008-09-08T14:11:30.307 に答える
0

すべてのデータベースアクセスがストアドプロシージャの「背後」にあるかどうかは、アプリケーションと会社のニーズによって異なります。ビューを使用してすべての更新のすべてのデータとストアドプロシージャを取得するシステムを実装しました。これにより、フロントエンド開発者が必要に応じてSQLクエリを使用できるようにしながら、セキュリティとデータベースロジックを一元化できます。

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

LinqToSqlはストアドプロシージャをサポートします。ScottGuに投稿があります。

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

于 2008-09-08T14:25:35.857 に答える
0

「ストアド プロシージャとインライン SQL/LINQ」の問題については、Jeff Atwood に非常に同意します .

SPROCs for all の群衆の中にいるのに、なぜ JOIN を実行したいのか、私は混乱しています。その JOIN を別の SPROC にラップするべきではありませんか?

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

于 2008-09-08T13:05:11.463 に答える