Paket Spatie, khususnya paket Laravel-permisi, membantu dalam mencegah injeksi SQL terutama melalui integrasi dengan mekanisme keamanan bawaan Laravel daripada dengan menerapkan fitur pencegahan injeksi SQL sendiri secara langsung. Inilah cara berkontribusi pada pencegahan injeksi SQL secara rinci:
1. Memanfaatkan pembangun permintaan Laravel dan orm yang fasih
Paket Spatie menggunakan ORM Laravel yang fasih dan pembangun kueri untuk berinteraksi dengan database. Pembuat permintaan Laravel dan fasih secara otomatis menggunakan kueri parameter dan pernyataan yang disiapkan, yang memisahkan kode SQL dari data input pengguna. Ini berarti input pengguna tidak pernah secara langsung digabungkan ke dalam string SQL, mencegah penyerang menyuntikkan kode SQL berbahaya. Laravel lolos dari nilai input dengan benar sebelum menjalankan kueri, dengan demikian mengurangi risiko injeksi SQL [1] [5].
2. Peran dan manajemen izin tanpa pertanyaan mentah
Paket Spatie mengelola peran dan izin melalui model yang fasih seperti `role` dan` izin`. Saat Anda menetapkan izin atau peran, Anda menggunakan metode seperti `$ role-> GivePerMissionTo ($ Izin)`, yang secara internal menggunakan metode pembangunan permintaan yang aman Laravel. Ini menghindari kueri SQL mentah yang rentan terhadap kerentanan injeksi [1].
3. Menghindari kueri dinamis yang tidak aman
Sementara pembangun permintaan Laravel melindungi terhadap nilainya injeksi, itu tidak secara otomatis melindungi nama kolom dinamis atau fragmen SQL mentah. Paket Spatie menghindari SQL dinamis yang tidak aman dengan tidak mengizinkan input pengguna tanpa filter untuk secara langsung mempengaruhi struktur kueri (seperti nama kolom atau klausa pesanan), yang merupakan vektor injeksi umum. Ini penting karena perlindungan Laravel berlaku untuk nilai tetapi tidak untuk pengidentifikasi SQL seperti nama kolom [7].
4. Mendorong prinsip hak istimewa paling tidak
Paket ini juga mendorong praktik terbaik seperti membatasi izin basis data untuk pengguna. Dengan hanya menetapkan izin yang diperlukan untuk pengguna basis data, bahkan jika serangan injeksi terjadi, kerusakannya terbatas. Prinsip hak istimewa yang paling sedikit ini melengkapi pencegahan injeksi SQL dengan mengurangi dampak serangan potensial [1].
5. Tidak ada penggunaan SQL mentah langsung
Paket menghindari menggunakan kueri SQL mentah jika memungkinkan. Jika kueri mentah diperlukan, pendekatan Laravel yang direkomendasikan adalah menggunakan pernyataan yang disiapkan atau pengikatan parameter secara eksplisit untuk memastikan input disanitasi, yang dipatuhi dengan mengandalkan pembangun kueri Laravel dan ORM yang fasih [5].
Singkatnya, paket spatie membantu mencegah injeksi SQL dengan mengandalkan bangunan kueri yang aman Laravel dan mekanisme pengikatan parameter, menghindari SQL mentah yang tidak aman, dan mempromosikan praktik terbaik seperti hak istimewa paling sedikit. Itu sendiri tidak menerapkan pencegahan injeksi SQL tetapi memanfaatkan fitur yang kuat Laravel untuk memastikan interaksi basis data yang aman saat mengelola peran dan izin [1] [5] [7].
Kutipan:
[1] https://escape.tech/blog/laravel-sql-clection-guide/
[2] https://www.stackhawk.com/blog/sql-crevention-laravel/
[3] https://www.reddit.com/r/laravel/comments/bbxhoc/unsafe_sql_functions_be_aware_of_your/
[4] https://stitcher.io/blog/unsafe-sql-functions-in-laravel
[5] https://pentest-tools.com/blog/laravel-application-security-guide
[6] https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php
[7] https://swiftmade.co/blog/2019-04-10-orderby-sql-intection/
[8] https://www.acunetix.com/websitesecurity/sql-intection/