Laravel 용 Spatie 패키지는 데이터베이스 쿼리를 구축하는 안전하고 표현적인 방법을 제공하여 안전하지 않은 SQL 사용의 위험을 줄임으로써 주로 SQL 주입을 방지합니다. SQL 주입 방지에 기여하는 Spatie 패키지의 주요 기능에는 다음이 포함됩니다.
- 필터링 및 쿼리를위한 도메인 별 언어 (DSL) 사용 : Spatie는 필터를 적용하고 쿼리를 적용하기위한 깨끗하고 제어 된 API를 제공하므로 개발자가 원시 또는 동적 SQL 문자열을 피하도록 장려합니다. 이 DSL 접근법은 허용 필터와 매개 변수 만 사용되도록하여 확인되지 않은 입력을 통해 주입 가능성을 줄입니다 [2].
- Laravel의 쿼리 빌더 및 Eloquent ORM과의 통합 : Laravel의 기본 쿼리 빌더와 Eloquent ORM은 기본적으로 준비된 명령문을 사용하기 때문에 Spatie는이를 활용하여 매개 변수를 안전하게 바인딩합니다. 준비된 명령문은 데이터와 SQL 코드를 분리하여 사용자 입력이 실행 가능한 SQL 명령으로 해석되는 것을 방지합니다 [7].
- 허용 필터의 장려 (화이트리스트 접근) : Spatie의 필터링 시스템은 허용되는 필터 및 매개 변수를 정확하게 지정하여 허용 목록을 효과적으로 구현합니다. 이 입력 검증 전략은 데이터베이스 계층에 도달하기 전에 예상치 못한 또는 악의적 인 입력을 거부하여 주입 위험을 완화합니다 [2].
- Laravel의 내장 보안 기능 보완 : Laravel 자체는 준비된 명세서 및 입력 탈출을 통해 SQL 주입을 보호하는 반면, Spatie는 원시 SQL 및 수동 입력 소재의 필요성을 줄이는 구조화 된 쿼리 빌딩 및 필터링 도구를 제공하여이를 향상시킵니다 [4] [7].
요약하면, Spatie 패키지는 제어 된 입력 필터링으로 쿼리를 구축하는 안전하고 선언적인 방법을 제공하고 Laravel의 준비된 명령문에 의존하며 데이터베이스와 상호 작용하기 전에 사용자 입력을 검증하고 제한하는 허용 필터와 같은 모범 사례를 홍보함으로써 SQL 주입을 방지합니다. 이 계층화 된 접근법은 악성 SQL 코드를 주입 할 위험을 최소화합니다.
인용 :
[1] https://escape.tech/blog/laravel-sql-injection-guide/
[2] https://www.reddit.com/r/laravel/comments/bbxhoc/unsafe_sql_functions_be_aware_of_your/
[3] https://stitcher.io/blog/unsafe-sql-functions-in-laravel
[4] https://acquaintsoft.com/answers/prevention-for-security-vulnerabilities-in-laravel
[5] https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php
[6] https://www.baeldung.com/sql-injection
[7] https://magecomp.com/blog/enhancing-web-application-security-with-laravels-built-in-features/
[8] https://learn.g2.com/sql-injection
[9] https://stackoverflow.com/questions/1862036/how-o-i-protect-this-function-from-sql-injection
[10] https://cheatsheetseries.owasp.org/cheatsheets/sql_injection_prevention_cheat_sheet.html
[11] https://www.varonis.com/blog/sql-injection-dentification-and-prevention-part-1