απαιτήσεις: Το έργο χρησιμοποιεί το πλαίσιο EF ORM για να προσθέσει, να διαγράψει, να τροποποιήσει και να ελέγξει τη βάση δεδομένων, αλλά ενόψει πολύπλοκων ερωτημάτων, ενδέχεται να μην είναι δυνατή η χρήση Linq και Lambda για καλύτερα ερωτήματα, επομένως πρέπει να χρησιμοποιήσουμε το EF 6 για να εκτελέσουμε εγγενείς δηλώσεις SQL για ερωτήματα.
Ακατέργαστο ερώτημα SQL (EF6):Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Δεδομένου ότι οι δηλώσεις SQL πρέπει να φέρουν τη συνθήκη where, η τιμή της παραμέτρου μεταβιβάζεται μέσω της παραμέτρου URL.
Πρώτον, η δήλωση SQL χρησιμοποιεί συνένωση συμβολοσειρών για την υποβολή ερωτημάτων, ως εξής:
Ο κωδικός έχει ως εξής:
Μπορείτε να δείτε τις δηλώσεις SQL που εκτελούνται από τη βάση δεδομένων ως εξής:
ΕΠΙΛΟΓΗ Όνομα ΑΠΟ [Ταξινόμηση] WHERE Name = 'Ανάπτυξη κινητής τηλεφωνίας'; επιλέξτε 1; --' ΔιαβαίνωΟ τρόπος με τον οποίο συνδέονται οι δηλώσεις SQL κινδυνεύει να εισαχθεί。
Τροποποιήσαμε τον κώδικα για να αποτρέψουμε επιθέσεις SQL injection παραμετροποιώντας ερωτήματα και ο κώδικας έχει ως εξής:
exec sp_executesql N'SELECT Όνομα ΑΠΟ [Ταξινόμηση] WHERE Όνομα = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; επιλέξτε 1; --'
Αντί να χρησιμοποιεί απευθείας μάτισμα, το EF Core το μετατρέπει σε παραμετροποιημένες δηλώσεις SQL. Οι παραπομπές είναι οι εξής:
(Τέλος)
|