Пакет Spatie, зокрема пакет Laravel-Permance, допомагає запобігти ін'єкції SQL насамперед завдяки його інтеграції з вбудованими механізмами безпеки Laravel, а не шляхом реалізації власних функцій запобігання ін'єкцій SQL. Ось, як це сприяє детально профілактиці ін'єкцій SQL:
1. Використання будівельника та красномовних ORM Laravel
Пакет Spatie використовує красномовний будівельник ORM та запитів Laravel для взаємодії з базою даних. Будівельник запитів Laravel автоматично використовує параметризовані запити та підготовлені оператори, які відокремлюють SQL -код від вхідних даних користувача. Це означає, що входи користувачів ніколи не об'єднані в SQL -рядки, що запобігає зловмисникам вводити шкідливий SQL -код. Laravel втікає вхідні значення належним чином перед тим, як здійснити запити, тим самим зменшуючи ризики ін'єкцій SQL [1] [5].
2. Роль та управління дозволом без необроблених запитів
Пакет Spatie управляє ролями та дозволами за допомогою красномовних моделей, таких як "роль" та "дозвіл". Коли ви присвоюєте дозволи або ролі, ви використовуєте такі методи, як `$ role-> divermissiontoto ($ дозволу)`, які внутрішньо використовують методи побудови безпечного запиту Laravel. Це дозволяє уникнути необроблених запитів SQL, схильних до вразливості ін'єкцій [1].
3. Уникнення небезпечних динамічних запитів
У той час як Builder Query Builder захищає від ін'єкції у значеннях, він не захищає динамічні назви стовпців або сирі фрагменти SQL. Пакет Spatie уникає небезпечного динамічного SQL, не дозволяючи нефільтрованому введенню користувача безпосередньо впливати на структуру запитів (наприклад, назви стовпців або вказівки), що є поширеним вектором введення. Це важливо, оскільки захист Ларавеля застосовується до значень, але не до ідентифікаторів SQL, таких як назви стовпців [7].
4. Заохочення принципу найменшого привілею
Пакет також заохочує найкращі практики, такі як обмеження дозволів на базу даних для користувачів. Призначаючи лише необхідні дозволи користувачам бази даних, навіть якщо настає атака ін'єкцій, пошкодження обмежене. Цей принцип найменшої привілеї доповнює запобігання ін'єкцій SQL за рахунок зменшення потенційного впливу атаки [1].
5. Немає прямого використання SQL
Пакет уникає використання сировинних запитів SQL, де це можливо. Якщо необхідні необроблені запити, рекомендується підхід Laravel - використовувати підготовлені твердження або прив'язування параметрів явно, щоб забезпечити санітарію вхідних даних, які спейти дотримуються, покладаючись на будівельника запитів Laravel та красномовних ORM [5].
Підсумовуючи це, пакет Spatie допомагає запобігти ін'єкції SQL, покладаючись на безпечне побудови запитів та механізми зв'язування параметрів, уникаючи небезпечних сировинних SQL та сприяючи найкращим практикам, як найменша привілей. Він сам по собі не впроваджує запобігання ін'єкцій SQL, але використовує надійні функції Laravel для забезпечення безпечної взаємодії з базами даних при управлінні ролями та дозволами [1] [5] [7].
Цитати:
[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-prevent-sql-injection-in-php
[7] https://swiftmade.co/blog/2019-04-10-orderby-sql-injection/
[8] https://www.acunetix.com/websitesecurity/sql-injection/