교차 사이트 요청 위조(CSRF) 공격은 공격자가 사용자를 속여 피해자의 웹 애플리케이션 내에서 의도하지 않은 작업을 수행하도록 하는 네트워크 공격 유형입니다.
CSRF 공격은 대부분의 웹 애플리케이션이 동일한 도메인 이름 내의 여러 페이지 간에 요청을 보낼 수 있다는 사실을 악용합니다. 공격자는 피해자의 애플리케이션에 요청을 보내는 악성 페이지를 만들어 승인되지 않은 작업을 촉발합니다.
1. CSRF 방지 토큰 사용:
// 生成令牌并存储在会话中 $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); // 在表单中包含隐藏字段 <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>"> // 验证提交的令牌 if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { // 令牌无效,拒绝请求 }
2. 동기화 토큰 패턴 사용:
// 在首次加载页面时生成令牌并存储在 Cookie 中 setcookie('csrf_token', bin2hex(random_bytes(32)), time() + 3600, '/'); // 在表单提交时,将令牌作为 HTTP 头发送 $headers = getallheaders(); $csrf_token = $headers['X-CSRF-Token']; // 验证提交的令牌 if (!isset($csrf_token) || $csrf_token !== $_COOKIE['csrf_token']) { // 令牌无效,拒绝请求 }
예: 지갑 자금 이체에 대한 CSRF 공격 방지:
// 在用户加载转账页面时生成令牌 $transfer_token = bin2hex(random_bytes(32)); // 在表单中包含隐藏字段 <input type="hidden" name="transfer_token" value="<?php echo $transfer_token; ?>"> // 验证提交的令牌 if (!isset($_POST['transfer_token']) || $_POST['transfer_token'] !== $transfer_token) { // 令牌无效,拒绝转账请求 }
이러한 조치를 구현하면 CSRF 공격을 효과적으로 방지하고 PHP 애플리케이션을 보호할 수 있습니다.
위 내용은 PHP 프레임워크 보안 가이드: CSRF 공격을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!