Laravel의 SQL Injection Middleware 패키지는 들어오는 HTTP 요청을 가로 채고 입력 데이터를 검사하여 응용 프로그램 논리 또는 데이터베이스 계층에 도달하기 전에 SQL 주입 공격을 감지하고 방지하여 작동합니다. 다음은 이러한 미들웨어 기능이 어떻게 작동하는지에 대한 자세한 설명입니다.
핵심 기능
- 미들웨어는 쿼리 매개 변수, 양식 입력 및 기타 사용자 지원 데이터를 포함하여 HTTP 요청 데이터의 필터 역할을합니다.
- 이러한 입력을 검증하고 소독하여 악의적 인 SQL 코드 또는 SQL 쿼리를 조작하는 데 사용할 수있는 패턴이 포함되지 않도록합니다.
- 입력을 조기에 소독함으로써 안전하지 않은 데이터가 원시 SQL 쿼리 또는 주입에 취약 할 수있는 쿼리 빌더로 전달되는 것을 방지합니다.
기술 메커니즘
-미들웨어는 일반적으로``,`,`,`,`drop`,`select` 등과 같이 주입 공격에 일반적으로 사용되는 의심스러운 문자 또는 SQL 키워드에 대한 입력 문자열을 스캔합니다.
- 악의적 인 패턴이 감지되면 위험한 캐릭터를 피하거나 제거하거나 거부 할 수 있습니다.
- 일부 미들웨어 패키지는 또한 의심스러운 입력의 구성 가능한 로깅을 제공하여 개발자가 잠재적 공격 시도를 모니터링하고 분석 할 수 있도록합니다.
- 미들웨어는 전 세계적으로 모든 경로에 또는 추가 보호가 필요한 특정 경로에서 선택적으로 적용 할 수 있습니다.
Laravel의 통합
- 패키지는 Composer를 통해 설치되며 구성 파일을 게시하여 구성합니다.
- 미들웨어는 Laravel의 HTTP 커널에 전 세계 또는 노선 미들웨어로 등록됩니다.
- 일단 등록되면, 들어오는 모든 요청 또는 라우팅 된 요청을 자동으로 처리합니다.
- 개발자는 구성을 통해 로깅, 차단 또는 소독 전략과 같은 동작을 사용자 정의 할 수 있습니다.
추가 보호
-SQL 주입 외에도 일부 미들웨어 패키지는 디렉토리 서비스 쿼리에 사용되는 입력을 소독하여 LDAP 주입로부터 보호합니다.
- 미들웨어는 Eloquent ORM 및 Query Builder 매개 변수 바인딩과 같은 Laravel의 내장 보호를 보완하여 대부분의 경우 입력을 자동으로 탈출합니다.
- 원시 SQL 쿼리 또는 원시 표현식 (`whereRaw`,`셀렉트레이트 ')이 사용되는 경우에 특히 유용하며, 이는 본질적으로 위험합니다.
사용의 예
-미들웨어 패키지를 설치 한 후 (예 :``Composer는 Protect/SQL-Query-Protection ') 구성 및 CLEAR 캐시를 게시합니다.
- 미들웨어를`app/http/kernel.php`에 전 세계 또는 경로 미들웨어로 등록합니다.
- 들어오는 요청은 컨트롤러 나 데이터베이스 계층에 도달하기 전에 입력을 소독하거나 악의적 인 쿼리를 소독하는 미들웨어에 의해 필터링됩니다.
요약하면 Laravel의 SQL Injection Middleware 패키지는 SQL 주입 공격을 방지하기 위해 HTTP 요청 수준에서 사용자 입력을 면밀히 조사하고 소독하는 사전 보안 계층으로 작동합니다. 원시 쿼리와 의심스러운 입력 패턴을 타겟팅하여 Laravel의 기본 보호를 향상시켜 구성 가능한 로깅 및 차단 기능을 제공하여 응용 프로그램 및 데이터베이스를 보호합니다 [3] [4] [5].
인용 :
[1] https://escape.tech/blog/laravel-sql-injection-guide/
[2] https://www.stackhawk.com/blog/sql-injection-prevention-laravel/
[3] https://github.com/aswinsasi/injection-protector
[4] https://gist.github.com/bewithdhanu/3acd9a44c74e9f2696a5e41692fa89a3
[5] https://acquaintsoft.com/answers/what-is-is-sql-injection-protection-in-laravel
[6] https://stackoverflow.com/questions/15778572/preventing-sql-injection-in-1ode-js
[7] https://cheatsheetseries.owasp.org/cheatsheets/laravel_cheat_sheet.html
[8] https://stackoverflow.com/questions/35439234/laravel-dependency-injection-in-middleware