Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Πώς λειτουργεί το πακέτο Middleware SQL ένεσης στο Laravel


Πώς λειτουργεί το πακέτο Middleware SQL ένεσης στο Laravel


Το πακέτο Middleware SQL έγχυσης σε έργα Laravel, παρεμποδίζοντας τα εισερχόμενα αιτήματα HTTP και επιθεώρηση των δεδομένων εισόδου για την ανίχνευση και την πρόληψη των επιθέσεων έγχυσης SQL πριν φτάσουν στη λογική της εφαρμογής ή στο επίπεδο βάσης δεδομένων. Ακολουθεί μια λεπτομερή εξήγηση για το πώς αυτές οι λειτουργίες middleware:

Βασική λειτουργικότητα

- Το middleware λειτουργεί ως φίλτρο στα δεδομένα αιτήματος HTTP, συμπεριλαμβανομένων των παραμέτρων ερωτήματος, των εισόδων φόρμας και άλλων δεδομένων που παρέχονται από το χρήστη.
- Επικυρώνει και απολάμβανε αυτές τις εισόδους για να εξασφαλίσει ότι δεν περιέχουν κακόβουλο κώδικα SQL ή μοτίβα που θα μπορούσαν να χρησιμοποιηθούν για να χειριστούν τα ερωτήματα SQL.
- Με την απολύμανση των εισροών νωρίς, εμποδίζει τα μη ασφαλή δεδομένα να μεταβιβαστούν σε ακατέργαστα ερωτήματα SQL ή κατασκευαστές ερωτημάτων που μπορεί να είναι ευάλωτοι στην ένεση.

Τεχνικοί μηχανισμοί

-Το middleware σαρώνει τις χορδές εισόδου για ύποπτους χαρακτήρες ή λέξεις-κλειδιά SQL που χρησιμοποιούνται συνήθως σε επιθέσεις έγχυσης, όπως ``, ``, `-`, `drop ',` select', κλπ.
- Μπορεί να δραπετεύσει ή να αφαιρέσει επικίνδυνους χαρακτήρες ή να απορρίψει τα αιτήματα εντελώς εάν εντοπιστούν κακόβουλα σχέδια.
- Ορισμένα πακέτα middleware παρέχουν επίσης ρυθμιζόμενη καταγραφή ύποπτων εισόδων, επιτρέποντας στους προγραμματιστές να παρακολουθούν και να αναλύουν πιθανές προσπάθειες επίθεσης.
- Το middleware μπορεί να εφαρμοστεί παγκοσμίως σε όλες τις διαδρομές ή επιλεκτικά σε συγκεκριμένες διαδρομές που απαιτούν επιπλέον προστασία.

Ενσωμάτωση στο Laravel

- Το πακέτο εγκαθίσταται μέσω του Composer και έχει ρυθμιστεί με τη δημοσίευση του αρχείου διαμόρφωσης.
- Το Middleware είναι εγγεγραμμένο στον πυρήνα HTTP του Laravel είτε παγκοσμίως είτε ως middleware διαδρομής.
- Μόλις καταχωριστεί, επεξεργάζεται αυτόματα κάθε εισερχόμενο αίτημα ή αυτά που δρομολογούνται μέσω αυτού.
- Οι προγραμματιστές μπορούν να προσαρμόσουν τη συμπεριφορά, όπως στρατηγικές καταγραφής, αποκλεισμού ή απολύμανσης μέσω διαμόρφωσης.

Πρόσθετη προστασία

- Εκτός από την ένεση SQL, ορισμένα πακέτα middleware προστατεύουν επίσης από την έγχυση LDAP με απολύτως εισροές που χρησιμοποιούνται σε ερωτήματα υπηρεσιών καταλόγου.
- Το middleware συμπληρώνει τις ενσωματωμένες προστασίες του Laravel όπως η εύγλωττη δέσμευση παραμέτρων ORM και Query Builder, οι οποίες διαφεύγουν αυτόματα τις εισόδους στις περισσότερες περιπτώσεις.
- Είναι ιδιαίτερα χρήσιμο όταν χρησιμοποιούνται ακατέργαστα ερωτήματα SQL ή ακατέργαστες εκφράσεις (`Whereraw`,` selectraw '), οι οποίες είναι εγγενώς πιο επικίνδυνες.

Παράδειγμα χρήσης

-Αφού εγκαταστήσετε το πακέτο middleware (π.χ. μέσω του `Composer Diput Protect/SQL-Query-Protection '), δημοσιεύετε το config και clear cache.
- Καταχωρείτε το middleware στο `app/http/kernel.php` είτε παγκοσμίως ή ως middleware διαδρομής.
- Τα εισερχόμενα αιτήματα και στη συνέχεια φιλτράρονται από το middleware, το οποίο απολάμβανε εισόδους ή αποκλείει κακόβουλα ερωτήματα πριν φτάσουν στους ελεγκτές ή το επίπεδο βάσης δεδομένων σας.

Συνοπτικά, το πακέτο Middleware SQL Injection στο Laravel λειτουργεί ως ένα προορατικό στρώμα ασφαλείας που εξετάζει και απολάμβανε τις εισόδους των χρηστών στο επίπεδο αίτησης HTTP για την πρόληψη επιθέσεων έγχυσης SQL. Ενισχύει τις εγγενείς προστασίες του Laravel, στοχεύοντας τα ακατέργαστα ερωτήματα και τα ύποπτα πρότυπα εισόδου, παρέχοντας δυνατότητες διαμόρφωσης και αποκλεισμού για τη διασφάλιση της εφαρμογής και της βάσης δεδομένων [3] [4] [5].

Αναφορές:
[1] https://escape.tech/blog/laravel-sql-inection-guide/
[2] https://www.stackhawk.com/blog/sql-injection-prevention-laravel/
[3] https://github.com/aswinsasi/injection-protector
[4] https://gist.github.com/bewithdhanu/3acd9a44c74e9f2696a5e41692fa89a3
[5] https://acquaintsoft.com/answers/what-is-sql-inesice-protection-in-laravel
[6] https://stackoverflow.com/questions/15778572/preventing-sql-sinception-in-node-js
[7] https://cheatsheetseries.owasp.org/cheatsheets/laravel_cheat_sheet.html
[8] https://stackoverflow.com/questions/35439234/laravel-dependency-sinection-in-middleware