Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Spatie 패키지가 SQL 주입 방지에 어떻게 도움이됩니까?


Spatie 패키지가 SQL 주입 방지에 어떻게 도움이됩니까?


Spatie 패키지, 특히 Laravel-Permission 패키지는 자체 SQL 주입 방지 기능을 직접 구현하는 대신 Laravel의 내장 보안 메커니즘과의 통합을 통해 주로 SQL 주입을 방지하는 데 도움이됩니다. 다음은 SQL 주입 방지에 어떻게 기여하는지 자세히 설명합니다.

1. Laravel의 쿼리 빌더와 웅변 ORM 활용
Spatie의 패키지는 Laravel의 웅변적인 ORM 및 쿼리 빌더를 사용하여 데이터베이스와 상호 작용합니다. Laravelâ의 쿼리 빌더 및 웅변은 자동으로 매개 변수화 된 쿼리 및 준비 된 문을 사용하여 SQL 코드를 사용자 입력 데이터와 별도로 사용합니다. 이는 사용자 입력이 SQL 문자열에 직접 연결되지 않으므로 공격자가 악의적 인 SQL 코드를 주입하지 못하게합니다. Laravel은 쿼리를 실행하기 전에 입력 값을 올바르게 탈출하여 SQL 주입 위험을 완화합니다 [1] [5].

2. 원시 쿼리가없는 역할 및 권한 관리
Spatie 패키지는`role` 및`허가 '와 같은 웅변적인 모델을 통해 역할과 권한을 관리합니다. 권한 또는 역할을 할당하면 Laravel의 Safe Query Building Methods를 사용하는`$ role-> GivePermissionTo ($ hallisment)`와 같은 방법을 사용합니다. 이것은 주입 취약성이 발생하기 쉬운 원시 SQL 쿼리를 피합니다 [1].

3. 안전하지 않은 동적 쿼리를 피하십시오
Laravelâ의 쿼리 빌더는 값의 주입을 방지하지만 동적 열 이름 또는 원시 SQL 조각을 자동으로 보호하지는 않습니다. Spatie 패키지는 필터링되지 않은 사용자 입력이 일반적인 주입 벡터 인 쿼리 구조 (예 : 열 이름 또는 순서 조항)에 직접 영향을 미치지 않도록하여 안전하지 않은 동적 SQL을 피합니다. Laravel의 보호는 값에 적용되지만 열 이름과 같은 SQL 식별자에게는 적용되지 않기 때문에 중요합니다 [7].

4. 최소한의 특권 원칙을 장려합니다
이 패키지는 또한 사용자에 대한 데이터베이스 권한 제한과 같은 모범 사례를 권장합니다. 주입 공격이 발생하더라도 데이터베이스 사용자에게 필요한 권한 만 할당함으로써 손상이 제한됩니다. 최소 특권 의이 원칙은 잠재적 공격 영향을 줄임으로써 SQL 주사 방지를 보완합니다 [1].

5. 직접 원시 SQL 사용법이 없습니다
패키지는 가능한 경우 원시 SQL 쿼리를 사용하지 않습니다. 원시 쿼리가 필요한 경우, Laravel의 권장 접근법은 입력이 소독되도록 준비된 명령문 또는 매개 변수 결합을 사용하여 Spatie의 쿼리 빌더와 웅변 ORM에 의존하여 Spatie가 준수하는 것입니다 [5].

요약하면, Spatie 패키지는 Laravelâ의 안전한 쿼리 빌딩 및 매개 변수 바인딩 메커니즘에 의존하고 안전하지 않은 원시 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-i-prevent-sql-injection-in-php
[7] https://swiftmade.co/blog/2019-04-10-orderby-sql-injection/
[8] https://www.acunetix.com/websitesecurity/sql-injection/