Ich habe eine datengesteuerte Website, wo der Benutzer einige Zeichenfolgen auf einer Seite eingeben kann, die in eine Datenbank geht. Ich verwende LINQ für alle Einfügungen und Aktualisierungen, also denke ich, dass dieser Teil sicher ist. Die eingegebenen Daten werden dann den Benutzern auf einer anderen Seite angezeigt.Daten sicher aus SQL-Injection ausgeben?
Wenn die Ausgabe der Daten, ich bin noch nicht LINQ (nicht sicher, ob ich muss), und ich habe einige „SELECT“ Aussagen, die ähnlich wie diese:
SELECT Name, Description FROM Table WHERE ID=something
Meine Frage ist: Wenn die "Name" oder "Beschreibung" Daten in der obigen Aussage enthalten bösartigen Code, ist SQL-Injektion in diesem Kontext möglich?
Alle meine SELECT-Anweisungen mit einer "WHERE" -Klausel vergleichen definitiv nur Zahlen, also denke ich, dass dieser Teil sicher ist. Prost.
Ja, gut, wie ich schon sagte, Benutzereingaben werden verwendet, aber nicht wie Sie vorgeschlagen, wo Zeichenfolge Verkettung verwendet wird ... Also sollte ich sicher sein, oder? – user3173098
Korrigieren. Wenn Sie unbedingt die Benutzereingabe für Ihre SQL verwenden müssen, verwenden Sie einen SQLCommand und fügen Sie SQLParameters hinzu, damit Sie die Zeichenfolgen nicht zum Erstellen Ihrer SQL verwenden. Siehe dieses SO-Post http://stackoverflow.com/questions/910465/avoiding-sql-injection-without-parameters – kah608
Zustimmen kein direktes Risiko, aber wenn eine andere Anwendung die Abfrageergebnisse als Eingabe für eine andere Abfrage ohne ordnungsgemäße Entweichen oder Parametrisierung verwendet, Sie bin im Wesentlichen ein Träger der Injektion geworden, obwohl du nicht direkt betroffen bist. Überprüfen und/oder bereinigen Sie die Eingabe immer, bevor Sie in die Datenbank schreiben. Außerdem sind Sie weiterhin für allgemeine Code-Injection-Angriffe offen. In diesem Fall ist es anfällig für permanente Cross-Site-Scripting-Angriffe, die dazu führen können, dass andere Eigenschaften, einschließlich Ihrer Datenbank, verletzt werden. – SQLmojoe