2025년 Laravel 보안 최고 실천 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
PHP/Laravel 개발자 (중급~고급)
핵심 요약
- Laravel과 의존성, PHP 버전 업데이트 유지: 보안 패치와 개선 사항 포함
- 준비문 사용 강제:
DB::table()
사용,DB::select()
는 절대 피해야 함 - 보안 인증:
@csrf
,Hash::make()
사용,.env
파일 커밋 금지 - 환경 변수 사용:
APP_DEBUG=false
,URL::forceScheme('https')
적용 - 파일 검증:
mimes:jpg,jpeg,png
,max:2048
설정, 공개 경로 외 저장 - 세션 보안:
'secure' => true
,'http_only' => true
,'same_site' => 'lax'
- 속도 제한:
throttle:60,1
미들웨어 적용,fillable
/guarded
사용 - 로그 및 모니터링:
Log::warning()
+ Sentry/Bugsnag 사용, 신뢰한 패키지만 설치
섹션별 세부 요약
1. 의존성 업데이트
- Laravel, PHP, 의존성 최신 유지
- 보안 패치 및 개선 사항 적용 권장
2. SQL 주입 방지
- Eloquent ORM:
DB::table('users')->where('email', $email)
- 절대 피해야 할 예제:
DB::select("SELECT * FROM users WHERE email = '$email'")
3. HTML/JS 출력 이스케이프
- Blade 사용:
{{ $user->name }}
(HTML 이스케이프) {!! !!}
는 신뢰한 콘텐츠만 사용
4. CSRF 보호
@csrf
태그 필수 포함- 기본 미들웨어 포함 시 자동 적용
5. 인증 시스템 활용
- Laravel Breeze/Fortify/Jetstream 사용
- Gates/Policies로 액세스 제어:
$this->authorize('update', $post)
6. 암호 해싱
Hash::make('supersecret')
사용 (Bcrypt/Argon2 기본)- 평문 암호 저장 금지
7. 환경 변수 보호
.env
파일 커밋 금지APP_DEBUG=false
로 프로덕션 설정
8. SSL 강제
URL::forceScheme('https')
적용 (AppServiceProvider.php)
9. 파일 업로드 검증
mimes:jpg,jpeg,png
,max:2048
설정/public
외 저장, 파일명 정리
10. 세션 보안 설정
config/session.php
:'secure' => true
,'http_only' => true
,'same_site' => 'lax'
11. 브루트포스 방지
throttle:60,1
미들웨어 사용 (60회/1분 제한)
12. Eloquent 모델 보안
$fillable = ['name', 'email']
설정 (사용자 정의 필드 제한)
13. 로깅 및 모니터링
Log::warning()
사용 + Sentry/Bugsnag 통합- 의심 로그 기록 예:
Log::warning('Suspicious login attempt', ['email' => $request->email])
14. 패키지 신뢰성 검증
- 신뢰한 개발자만 사용, 업데이트 정기성, 커뮤니티 채택도 확인
- 도구: Larastan, Laravel Security Checker, PHPStan
15. 보안 습관 강화
- 보안은 하나의 작업이 아닌 습관
- Laravel의 기존 보안 기능을 정확히 활용
결론
- 보안은 지속적 프로세스: Laravel의 기본 기능을 정확히 사용하고, 의존성/패키지/환경 설정을 정기적으로 점검하세요.
- 핵심 팁:
@csrf
,Hash::make()
,throttle
미들웨어,.env
보호, SSL 강제 적용, 세션 보안 설정 등을 반드시 적용하세요.