CSRF (Cross-Site Request Grospory) 공격은 사용자가 신뢰하는 웹 응용 프로그램에서 의도하지 않은 작업을 수행하도록 속이는 속임수이기 때문에 특히 위험 할 수 있습니다. PHP의 CSRF 공격을 방지하려면 다음을 수행 할 수 있습니다.
SameSite
속성을 사용하십시오. SameSite
Strict
하거나 Lax
로 설정하면 쿠키가 크로스 오리핀 요청으로 전송되지 않도록 CSRF를 방지 할 수 있습니다.HttpOnly
및 Secure
와 같은 적절한 보안 플래그로 설정되어 있는지 확인하십시오.이러한 조치를 구현하면 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>
이러한 관행에 따라 CSRF 보호 메커니즘의 무결성을 유지하는 데 도움이됩니다.
여러 PHP 라이브러리는 CSRF 보호의 구현을 단순화 할 수 있습니다.
CsrfExtension
및 CsrfTokenManager
클래스는 CSRF 토큰 생성 및 검증에 대한 포괄적 인 지원을 제공합니다.@csrf
블레이드 지시문을 통해 양식에 포함됩니다.Zend\Validator\Csrf
구성 요소를 통해 CSRF 보호 기능을 제공하며, 이는 양식에 쉽게 통합 될 수 있습니다.이러한 라이브러리 중 하나를 사용하면 개발 시간을 절약하고 응용 프로그램에서 강력한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!