2009-08-04 2 views
0

Ich frage mich, ob jemand mir einen Link zu einem Best Practice-Muster für das Einfügen von Daten in einer SQL-Datenbank mit gespeicherten Prozeduren geben kann. Ich meine, welche Verfahren sollten wir ergreifen, um sicherzustellen, dass validierte Daten durch gespeicherte Prozeduren übertragen werden.Best Practice für die Verwendung von Stored Procedures in asp.net zum Einfügen von Daten

+0

Ich verstehe deine Frage nicht. Die offensichtliche Antwort lautet: "Validiere die Daten, bevor du sie verwendest", aber das ist zu offensichtlich, um das zu sein, was du meintest. Bitte klären Sie. –

+0

Handeln Sie wie die Daten wurden nicht validiert, wenn Sie es bekommen? – Martin

+0

NEIN Ich validiere Daten für Größe und Datentyp. Aber was, wenn irgendein Hacker versucht, etwas Javascript-Code oder SQL-Code hinzuzufügen. Wie kann ich diese Dinge einfangen? Darüber hinaus ist es in Ordnung, wenn ich diese Anweisung nur für die Eingabe von Parametern verwenden cm.Parameters.AddWithValue ("@ UserID", TxtID.Text.ToString()); Ich wollte nur wissen, ob es ein gutes Übungsmuster für diese Dinge gibt. – Mohit

Antwort

1

Je nachdem, ob Sie ein ORM verwenden oder direkten Datenbankzugriff verwenden, gibt es viele verschiedene Möglichkeiten. Eine Sache ist, dass Sie das SqlParameter-Objekt verwenden sollten, um SP-Parameter zu erstellen. Es gibt eine Vielzahl von Möglichkeiten, um eine SqlParameter mit verschiedenen Optionen zu schaffen, aber die einfachste Form ist

SqlParameter[] prms = new SqlParameter[1]; 
prms[0] = new SqlParameter("@userid", "Bob"); 
+0

Aber wie kann ich Javscript oder SQL-Code abfangen, wenn sie es in ein Textfeld geben? Zum Beispiel erlaube ich dem Benutzer, eine E-Mail-Nachricht zu schreiben, und ich speichern diese Nachricht auch in db vor dem Senden von E-Mails. Aber ich möchte nicht, dass Benutzer/Hacker einen voll funktionsfähigen Code in SQL schreiben, um meine Website zu hacken oder die Daten zu beschädigen. Obwohl ich Sql-Parameter verwende, aber ist es sicher? – Mohit

+1

Wenn Sie Parameter verwenden, können die Hacker keine SQL-Injektion durchführen. –

+0

Also das ist, was ich fragen, dass die Aussage, die Herr Cody C gegeben hat, genug für mich ist, oder muss ich noch andere Dinge tun? – Mohit

2

Ich würde empfehlen, eine Logik zur Validierung bei einer Schicht oben das gespeicherte Prozedur Implementierung einbetten. Auf diese Weise können Sie Ihre Implementierung und Ihr Exposure viel flexibler gestalten. Ein einfaches Beispiel ist, dass Sie eine Validierungsbibliothek für mehrere Projekte wiederverwenden können. Die meisten ORM-Bibliotheken unterstützen die Validierung in ihrer einfachsten Form, indem sie die entsprechende Typzuweisung zum Zeitpunkt der Kompilierung überprüfen.

Ich würde auch empfehlen, dass Sie Ihre Transaktionslogik in einem Layer über die gespeicherten Prozeduren implementieren.

+0

Kannst du mir eine gute kostenlose ORM-Bibliothek vorschlagen? – Mohit

+0

Ich wirklich, wirklich graben SubSonic [http://subsonicproject.com/Download]. Ich hatte eine angenehme Erfahrung w/2.2, habe aber noch das neu veröffentlichte 3.0 zu verwenden. – t3rse

Verwandte Themen