Anforderungen: Das Projekt verwendet das EF ORM-Framework, um die Datenbank hinzuzufügen, zu löschen, zu verändern und zu überprüfen, aber angesichts komplexer Abfragen ist es möglicherweise nicht möglich, Linq und Lambda für bessere Abfragen zu verwenden, daher müssen wir EF 6 verwenden, um native SQL-Anweisungen für Abfragen auszuführen.
Rohe SQL-Abfrage (EF6):Der Hyperlink-Login ist sichtbar.
Da SQL-Anweisungen die where-Bedingung tragen müssen, wird der Parameterwert über den URL-Parameter weitergegeben.
Zuerst verwendet unsere SQL-Anweisung eine String-Konkatenation zur Abfrage, wie folgt:
Der Code lautet wie folgt:
Die von der Datenbank ausgeführten SQL-Anweisungen können Sie wie folgt sehen:
NAME AUSWÄHLEN AUS [Klassifikation] WO Name = 'Mobile Development'; wählen Sie 1; --' BestehenDie Art und Weise, wie SQL-Anweisungen zusammengeschnitten werden, besteht vom Injektionsrisiko bedroht。
Wir haben den Code modifiziert, um SQL-Injection-Angriffe durch Parametrisierung von Abfragen zu verhindern, und der Code lautet wie folgt:
exec sp_executesql N'NAME SELECT FROM [Klassifikation] WO Name = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; wählen Sie 1; --'
Anstatt direkt Splicing zu verwenden, wandelt EF Core sie in parametrisierte SQL-Anweisungen um. Die Quellen sind wie folgt:
(Ende)
|