PHP CSRF 보호 : CSRF 공격 방지 방법.
PHP CSRF 보호 : CSRF 공격 방지 방법
CSRF (Cross-Site Request Grospory) 공격은 사용자가 신뢰하는 웹 응용 프로그램에서 의도하지 않은 작업을 수행하도록 속이는 속임수이기 때문에 특히 위험 할 수 있습니다. PHP의 CSRF 공격을 방지하려면 다음을 수행 할 수 있습니다.
- CSRF 토큰 사용 : 각 사용자 세션에 대해 고유 한 토큰을 생성하고 상태 변경 작업을 트리거하는 모든 형태 로이 토큰을 포함시킵니다. 요청을 처리하기 전에 서버에서 토큰을 확인해야합니다.
- 동일한 사이트 쿠키 : 쿠키에
SameSite
속성을 사용하십시오.SameSite
Strict
하거나Lax
로 설정하면 쿠키가 크로스 오리핀 요청으로 전송되지 않도록 CSRF를 방지 할 수 있습니다. - Double-Submit Cookie :이 방법에는 CSRF 토큰을 쿠키와 요청 매개 변수로 전송하는 것이 포함됩니다. 그런 다음 서버는 토큰 값이 일치하는지 확인합니다.
- 참조 헤더 점검 : 멍청하지는 않지만, 참조 헤더를 확인하면 추가 보호 계층을 제공 할 수 있습니다. 요청이 자신의 도메인에서 나옵니다.
- State 변경 작업에 Get을 사용하지 마십시오 . GET 요청을 다른 사이트에서 쉽게 트리거 할 수 있으므로 서버 상태를 변경하는 작업에 게시물을 사용하십시오.
- 적절한 세션 관리 구현 : 세션이 올바르게 관리되고 쿠키가
HttpOnly
및Secure
와 같은 적절한 보안 플래그로 설정되어 있는지 확인하십시오.
이러한 조치를 구현하면 PHP 응용 프로그램에 대한 CSRF 공격의 위험을 크게 줄일 수 있습니다.
PHP에서 CSRF 토큰을 구현하기위한 모범 사례는 무엇입니까?
PHP에서 효과적으로 CSRF 토큰 구현에는 몇 가지 모범 사례가 포함됩니다.
-
고유 한 토큰 생성 : 암호화 적으로 안전한 방법을 사용하여 토큰을 생성하십시오. PHP의
random_bytes
및bin2hex
기능을 사용하여 안전한 토큰을 만들 수 있습니다.<code class="php">$token = bin2hex(random_bytes(32));</code>
로그인 후 복사 -
토큰을 안전하게 보관하십시오 : 사용자 세션이나 쿠키로 토큰을 저장하십시오. 세션을 사용하는 경우 세션 고정 공격이 방지됩니다.
<code class="php">session_start(); $_SESSION['csrf_token'] = $token;</code>
로그인 후 복사 -
양식에 토큰 포함 : 토큰을 숨겨진 입력 필드로 양식에 포함시킵니다.
<code class="php"><input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($token); ?>"></code>
로그인 후 복사 - 제출시 토큰 검증 : 저장된 값에 대한 양식 제출시 토큰을 확인하십시오.
- 토큰 재생 : 성공적인 양식 제출 후 또는 특정 기간 후에 공격 창을 줄이기 위해 토큰 재생 토큰을 고려하십시오.
- 모든 상태 변화 요청에 토큰 사용 : 기존 양식 제출뿐만 아니라 AJAX 호출도 서버 상태를 수정하는 모든 요청에 CSRF 토큰을 포함시킵니다.
- 예측 가능한 토큰을 피하십시오 : 공격자가 토큰을 예측할 수 있거나 추측 할 수 없는지 확인하십시오.
이러한 관행에 따라 CSRF 보호 메커니즘의 무결성을 유지하는 데 도움이됩니다.
CSRF 보호를 위해 PHP 라이브러리를 추천 할 수 있습니까?
여러 PHP 라이브러리는 CSRF 보호의 구현을 단순화 할 수 있습니다.
- OWASP CSRFGUARD PHP : CSRF 보호를 위해 특별히 설계된 Open Web Application Security Project (OWASP)의 라이브러리. 토큰 생성, 검증 및 다양한 프레임 워크와의 통합을위한 강력한 메커니즘을 제공합니다.
- Symfony Security : Symfony 프레임 워크를 사용하는 경우 CSRF 보호 기능이 내장되어 있습니다.
CsrfExtension
및CsrfTokenManager
클래스는 CSRF 토큰 생성 및 검증에 대한 포괄적 인 지원을 제공합니다. - LARAVEL : Laravel의 CSRF 보호는 구현하기가 간단합니다. 이 프레임 워크는 각 활성 사용자 세션에 대해 CSRF 토큰을 자동으로 생성하며
@csrf
블레이드 지시문을 통해 양식에 포함됩니다. - Zend Framework : Zend Framework는
Zend\Validator\Csrf
구성 요소를 통해 CSRF 보호 기능을 제공하며, 이는 양식에 쉽게 통합 될 수 있습니다. - AURA.WEB : CSRF 토큰 생성 및 검증을 제공하는 경량 라이브러리는 PHP 프로젝트에 사용하기에 적합합니다.
이러한 라이브러리 중 하나를 사용하면 개발 시간을 절약하고 응용 프로그램에서 강력한 CSRF 보호를 보장 할 수 있습니다.
PHP의 양식 제출에 대한 CSRF 토큰을 어떻게 검증합니까?
PHP의 양식 제출에서 CSRF 토큰 검증은 양식과 함께 보낸 토큰을 세션 또는 쿠키에 저장된 양식과 비교하는 것입니다. 단계별 가이드는 다음과 같습니다.
-
저장된 토큰 검색 : 세션이나 쿠키에 저장된 토큰에 액세스하십시오.
<code class="php">session_start(); $storedToken = $_SESSION['csrf_token'];</code>
로그인 후 복사 -
제출 된 토큰 검색 : 양식 제출물로 보낸 토큰을 얻습니다.
<code class="php">$submittedToken = $_POST['csrf_token'];</code>
로그인 후 복사 -
토큰 검증 : 저장된 토큰을 제출 된 토큰과 비교하십시오.
<code class="php">if (!hash_equals($storedToken, $submittedToken)) { // Token mismatch, handle the error http_response_code(403); die("CSRF token validation failed"); }</code>
로그인 후 복사 -
요청을 진행하십시오 . 토큰이 일치하는 경우 양식 데이터 처리를 진행하십시오.
<code class="php">// Tokens match, proceed with the form submission // Process the form data here</code>
로그인 후 복사 -
토큰 재생성 : 선택적으로, 보안을 강화하기 위해 성공적인 제출 후 토큰을 재생합니다.
<code class="php">$newToken = bin2hex(random_bytes(32)); $_SESSION['csrf_token'] = $newToken;</code>
로그인 후 복사
이 단계를 수행하면 CSRF 토큰이 올바르게 검증되어 CSRF 공격으로부터 응용 프로그램을 보호 할 수 있습니다.
위 내용은 PHP CSRF 보호 : CSRF 공격 방지 방법.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)