찾다
백엔드 개발PHP8PHP 8의 CSRF (Cross-Site Request Properery)로부터 보호하는 방법은 무엇입니까?

이 기사는 동기화기 토큰을 사용하여 PHP 8의 CSRF 보호에 대해 자세히 설명합니다. 토큰 생성, 양식에 포함 및 서버 측 확인을 설명합니다. 모범 사례, 일반적인 취약성 (부적절한 토큰 취급) 및 점진적인 통합

PHP 8의 CSRF (Cross-Site Request Properery)로부터 보호하는 방법은 무엇입니까?

PHP 8의 CSRF (Cross-Site Request Properery)로부터 보호하는 방법은 무엇입니까?

PHP 8의 CSRF (Cross-Site Reques) 위조 (CSRF)로부터 보호하려면 강력한 메커니즘을 구현하여 요청이 악의적 인 타사 사이트가 아닌 응용 프로그램에서 유래했는지 확인해야합니다. 가장 효과적인 방법은 동기화 토큰을 사용하는 것입니다. 여기에는 각 사용자 세션에 대해 독특하고 예측할 수없는 토큰을 생성하고 서버에 제출 된 양식에 포함시킵니다. 양식 제출을 받으면 서버는 제출 된 토큰이 사용자 세션에 저장된 토큰과 일치하는지 확인합니다. 일치하지 않으면 요청은 잠재적으로 사기로 거부됩니다.

PHP 8에서이를 구현하는 방법은 다음과 같습니다.

  1. 토큰 생성 : 암호화 적으로 안전한 임의의 토큰을 생성합니다. PHP의 random_bytes() 함수는 이에 이상적입니다. $_SESSION 사용하여 사용자 세션에 토큰을 저장하십시오.
  2. 토큰을 양식에 포함 시키십시오 : 생성 된 토큰과 함께 HTML 형태에 숨겨진 입력 필드를 포함하십시오. 이 필드에는 이름이 csrf_token (또는 유사하게 설명적인 이름)이 있어야합니다.
  3. 토큰 검증 : 서버 측에서 양식 제출을 처리 할 때 제출 된 양식 ( $_POST['csrf_token'] ) 및 사용자 세션 ( $_SESSION['csrf_token'] )에서 토큰을 검색하십시오. 둘을 비교하십시오. 그들이 동일하다면, 요청은 합법적 일 것입니다. 그렇지 않은 경우 요청을 거부하고 오류 메시지를 표시하십시오.
 <code class="php"><?php session_start(); // Generate CSRF token on first page load if (!isset($_SESSION[&#39;csrf_token&#39;])) { $_SESSION[&#39;csrf_token&#39;] = bin2hex(random_bytes(32)); } // Example form echo "<form method=&#39;post&#39; action=&#39;process.php&#39;>"; echo "<input type="'hidden'" name="'csrf_token'" value="'{$_SESSION['csrf_token']}'">"; echo "<input type="'submit'" value="'Submit'">"; echo ""; // process.php session_start(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) { // Process the form data - the request is likely legitimate // ... your code to handle the form submission ... unset($_SESSION['csrf_token']); // good practice to remove token after use } else { // Reject the request - CSRF attack detected die("CSRF attack detected!"); } } ?></code>

토큰의 가로 채기를 방지하기 위해 항상 HTTPS를 사용해야합니다.

PHP 8 애플리케이션에서 CSRF 보호를 구현하기위한 모범 사례는 무엇입니까?

단순히 동기화 토큰을 사용하는 것 외에도 여러 모범 사례는 CSRF 보호를 향상시킵니다.

  • 이중 제출 쿠키 : 숨겨진 양식 필드 외에도 쿠키에 토큰을 포함시킵니다. 이것은 또 다른 보호 계층을 추가하여 숨겨진 필드가 조작 될 수있는 취약점을 완화합니다. 서버는 쿠키와 숨겨진 필드 값을 모두 비교해야합니다.
  • 정기 토큰 재생 : 손상된 토큰의 영향을 제한하기 위해 CSRF 토큰을 정기적으로 (예 : 각 양식 제출 후) 재생합니다.
  • HTTP 전용 쿠키 : CSRF 쿠키의 HttpOnly 플래그를 설정하십시오. 이로 인해 클라이언트 측 JavaScript가 쿠키에 액세스하는 것을 방지하여 공격자가 토큰을 훔치기가 더 어려워집니다.
  • 보안 쿠키 : CSRF 쿠키의 Secure 플래그를 사용하여 HTTPS에서만 전송되도록하십시오.
  • 입력 소독 및 검증 : CSRF 보호 메커니즘에 직접 관여하지 않더라도 항상 모든 사용자 입력을 소독하고 검증하십시오. 이는 CSRF 공격과 함께 악용 될 수있는 다른 취약점을 방지하는 데 도움이됩니다.
  • 정기적 인 보안 감사 : 응용 프로그램의 정기적 인 보안 감사를 수행하여 잠재적 약점을 식별하고 해결합니다.

PHP 8에는 응용 프로그램이 CSRF 공격에 취약하게 남겨 두는 일반적인 취약점이 있습니까?

PHP 8 자체는 CSRF로 이어지는 새로운 취약점을 도입하지 않지만 몇 가지 일반적인 코딩 관행은 응용 프로그램을 취약하게 만들 수 있습니다.

  • CSRF 보호 부족 ​​: 가장 중요한 취약점은 CSRF 보호 메커니즘이 없다는 것입니다. 이로 인해 응용 프로그램은 공격에 넓게 열려 있습니다.
  • 부적절한 토큰 취급 : CSRF 토큰을 잘못 생성, 저장 또는 확인하면 보호가 효과가 없을 수 있습니다. 예를 들어, 예측 가능하거나 쉽게 추측 할 수있는 토큰을 사용하거나 세션 관리를 올바르게 처리하지 못하거나 사용 후 토큰을 재생하는 것을 무시합니다.
  • 취약한 프레임 워크 또는 라이브러리 : 구식 또는 불안한 프레임 워크 또는 라이브러리를 사용하면 CSRF 공격과 함께 악용 될 수있는 취약점을 도입 할 수 있습니다. 보안 패치로 항상 의존성을 최신 상태로 유지하십시오.

최소한의 중단으로 CSRF 보호를 기존 PHP 8 프로젝트에 통합하려면 어떻게해야합니까?

CSRF 보호를 기존 프로젝트에 통합하는 것을 점차적으로 수행 할 수 있습니다. 고위험 형태 (암호 변경, 금융 거래 또는 사용자 프로필 업데이트와 같은 중요한 조치를 수행하는 것)에 중점을 둡니다.

  1. 취약한 양식을 식별 : 응용 프로그램 양식을 검토하여 CSRF 보호가 필요한 양식을 식별하십시오.
  2. 토큰 생성 및 확인 구현 : 첫 번째 답변과 같이 토큰 생성 및 검증 코드를 식별 된 양식에 추가하십시오. 간단한 구현으로 시작하여 모범 사례로 점차적으로 향상하십시오.
  3. 라이브러리 사용 (선택 사항) : CSRF 보호 기능을 제공하는 잘 관리 된 보안 라이브러리를 고려하십시오. 이를 통해 구현을 단순화하고 모범 사례를 준수 할 수 있습니다.
  4. 철저히 테스트 : 보호 통합 후 응용 프로그램이 올바르게 작동하고 새로운 문제를 도입하지 않도록 응용 프로그램을 철저히 테스트하십시오. 도구와 기술을 사용하여 CSRF 공격을 시뮬레이션하여 구현의 효과를 확인하십시오.
  5. 점진적 롤아웃 : 프로젝트가 크면 CSRF 보호의 단계적 롤아웃을 고려하여 중단을 최소화하십시오. 작은 양식의 작은 서브 세트로 시작하여 응용 프로그램의 나머지 부분으로 점차 확장하십시오. 이 접근법은 더 쉽게 디버깅을 허용하고 예상치 못한 문제의 위험을 줄입니다.

위 내용은 PHP 8의 CSRF (Cross-Site Request Properery)로부터 보호하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경