2008-09-08 10 views
2

Ich versuche immer noch LINQ und Zugriff auf eine SQL-Datenbank.LINQ und Datenbankberechtigungen

Ich wurde immer gelehrt, dass Sie nur Ausführungsrechte von gespeicherten Prozeduren zu Ihren Daten haben sollten.

Sie sollten niemals auswählen/einfügen/aktualisieren/löschen.

(Dies ist wegen der Leistung und Sicherheit)

Um die Daten aus LINQ zu bekommen offensichtlich Sie wählen Berechtigungen benötigen. Ich weiß, dass Sie gespeicherte Procs mit LINQ verwenden können, aber da ich nicht Joins kann, was ist der Punkt?

Habe ich etwas verpasst ???

Antwort

2

1) Wir sind Programmierer, nicht DBA Faschisten. Wenn Ihre Anforderungen angeben, dass die Datenbank zu 100% gesperrt werden muss, ist Linq nicht für Sie geeignet. Ich bin kein DBA, also glaube ich, dass der meiste Performance-/Sicherheits-Hype genau das ist. Linq ist für mich.

2) Sie können Joins mit linq tun.

@Philippe: Linq wandelt Auswertungen automatisch in Abfrageparameter um, so dass es einen gewissen Schutz vor SQL-Injektionen bietet. Sie müssen Ihre Anforderungen jedoch immer genau bewerten, um zu ermitteln, wie viel Sicherheit Sie auf welchen Ebenen benötigen. Linq macht den Umgang mit der Datenbank viel einfacher, aber es macht es einfacher, das sichere Design auf den hinteren Bereich zu stellen, was eine schlechte Sache ist.

0

Ich bin sehr mit Jeff Atwood über das Problem "Stored Procedures vs. Inline SQL/LINQ" einverstanden: Who Needs Stored Procedures, Anyways?.

Ich bin verwirrt, warum Sie sogar ein JOIN durchführen möchten, wenn Sie in der SPROCs-für-alles-Menge sind; solltest du diesen JOIN nicht in einen anderen SPROC einbinden?

Wie gesagt, LINQ wurde nicht für die Art der DB-Verwendung entwickelt, von der Sie sprechen; Es wurde entwickelt, um uns statisch typisiertes Inline-SQL zu geben. Sie können den Zugriff jedoch weiterhin über Benutzerberechtigungen steuern, wenn Sie LINQ to SQL verwenden.

0

Nun, aus Sicherheitsgründen sollten Sie keine Benutzer eingegebenen Daten in Abfragen eingeben. Wenn Sie sich an diese Regel halten, sehe ich nicht das Problem, die Berechtigung auszuwählen.

1

Ob der gesamte Datenbankzugriff "hinter" gespeicherten Prozeduren liegt, hängt von den Anforderungen der Anwendung und des Unternehmens ab. Ich habe Systeme implementiert, die Ansichten verwenden, um alle Daten und gespeicherten Prozeduren für alle Updates zu erhalten. Dies ermöglicht eine zentralisierte Sicherheit und Datenbanklogik, während Front-End-Entwickler bei Bedarf SQL-Abfragen verwenden können.

Wie so viele andere Dinge in der Programmierung - es hängt von den Bedürfnissen für Ihr Projekt ab.

LinqToSql unterstützt gespeicherte Prozeduren. Scott Gu hat einen Beitrag dazu:

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