Spatie paketi, özellikle Laravel-Farikat paketi, SQL enjeksiyonunu, kendi SQL enjeksiyon önleme özelliklerini doğrudan uygulamak yerine Laravel'in yerleşik güvenlik mekanizmalarıyla entegrasyonu yoluyla önlemeye yardımcı olur. İşte SQL enjeksiyon önlemesine ayrıntılı olarak nasıl katkıda bulunuyor:
1. Laravel'in Sorgu Oluşturucu ve Eloquent ORM'den yararlanıyor
Spatie'nin paketi, veritabanıyla etkileşim kurmak için Laravel'in Eloquent Orm ve Query Builder'ı kullanır. Laravel'in sorgu oluşturucu ve Eloquent, SQL kodunu kullanıcı giriş verilerinden ayıran parametreli sorguları ve hazırlanmış ifadeleri otomatik olarak kullanır. Bu, kullanıcı girişlerinin hiçbir zaman doğrudan SQL dizelerinde birleştirilmediği ve saldırganların kötü amaçlı SQL kodu enjekte etmesini engellemesi anlamına gelir. Laravel, sorguları yürütmeden önce giriş değerlerinden kaçar, böylece SQL enjeksiyon risklerini hafifletir [1] [5].
2. Ham sorguları olmadan rol ve izin yönetimi
Spatie paketi, `` rolü '' ve `izin 'gibi etkili modeller aracılığıyla rolleri ve izinleri yönetir. İzin veya rol atadığınızda, `` $ Rol-> GivePerMissionto ($ izin) 'gibi, Laravel'in güvenli sorgu oluşturma yöntemlerini dahili olarak kullanan yöntemleri kullanırsınız. Bu, enjeksiyon güvenlik açıklarına eğilimli ham SQL sorgularını önler [1].
3. Güvensiz dinamik sorgulardan kaçınmak
Laravel'in sorgu üreticisi değerlerde enjeksiyona karşı korurken, dinamik sütun adlarını veya ham SQL parçalarını otomatik olarak korumaz. Spatie paketi, ortak bir enjeksiyon vektörü olan sorgu yapısını (sütun adları veya sipariş maddeleri gibi) doğrudan etkilemesine izin vermeyerek güvenli olmayan dinamik SQL'den kaçınır. Bu önemlidir, çünkü Laravel'in koruması değerler için geçerlidir, ancak sütun adları gibi SQL tanımlayıcıları için geçerli değildir [7].
4. En az ayrıcalık prensibini teşvik etmek
Paket ayrıca kullanıcılar için veritabanı izinlerini sınırlama gibi en iyi uygulamaları teşvik eder. Veritabanı kullanıcılarına yalnızca gerekli izinleri atayarak, bir enjeksiyon saldırısı meydana gelse bile, hasar sınırlıdır. Bu en az ayrıcalık prensibi, potansiyel saldırı etkisini azaltarak SQL enjeksiyonu önlemeyi tamamlar [1].
5. Doğrudan ham SQL kullanımı yok
Paket, mümkün olduğunca ham SQL sorgularını kullanmaktan kaçınır. Ham sorgular gerekliyse, Laravel'in önerilen yaklaşımı, Spatie'nin Laravel'in sorgu üreticisine ve etkili ORM'ye dayanarak yapışan girdilerin dezenfekte edilmesini sağlamak için hazırlanan ifadeleri veya parametre bağlamasını kullanmaktır [5].
Özetle, Spatie paketi, Laravel'in güvenli sorgu oluşturma ve parametre bağlama mekanizmalarına dayanarak, güvensiz ham SQL'den kaçınarak ve en az ayrıcalık gibi en iyi uygulamaları teşvik ederek SQL enjeksiyonunu önlemeye yardımcı olur. Kendisi SQL enjeksiyon önleme uygulamaz, ancak rolleri ve izinleri yönetirken güvenli veritabanı etkileşimlerini sağlamak için Laravel'in sağlam özelliklerinden yararlanır [1] [5] [7].
Alıntılar:
[1] https://escape.tech/blog/laravel-sql-injection-guide/
[2] https://www.stackhawk.com/blog/sql-injection-prevention-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-ormorby-sql-injection/
[8] https://www.acunetix.com/websitesecurity/sql-injection/