요약: PHP 함수의 CSRF 공격은 토큰을 사용하여 방어할 수 있습니다. 고유한 토큰을 생성하여 세션이나 쿠키에 저장합니다. 보호된 양식에 토큰을 숨겨진 필드로 포함합니다. 양식 제출을 처리할 때 토큰이 저장된 토큰과 일치하는지 확인하세요. 일치하는 항목이 없으면 요청이 거부됩니다.
PHP 함수에서 CSRF 공격을 방어하는 방법
교차 사이트 요청 위조(CSRF)는 공격자가 피해자의 브라우저를 통해 스푸핑된 요청을 보낼 수 있도록 하는 악성 기술입니다. PHP 애플리케이션의 경우 이로 인해 공격자가 특정 기능을 사용하여 승인되지 않은 작업을 수행할 수 있습니다.
실용 사례:
사용자가 비밀번호를 변경할 수 있는 change_password
함수가 포함된 PHP 애플리케이션이 있다고 가정해 보겠습니다. 이 함수는 다음 코드를 사용합니다. change_password
。该函数使用以下代码:
<?php if (isset($_POST['password'])) { $password = $_POST['password']; // 更新数据库中的密码... } ?>
此代码容易受到 CSRF 攻击,因为攻击者可以向受害者的浏览器发送一个 POST 请求,其中包含他们希望用于受害者密码的 password
<?php session_start(); // 生成令牌并将其存储在会话中 $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); ?>이 코드는 공격자가 피해자의 비밀번호에 사용하려는
password
매개변수가 포함된 POST 요청을 피해자의 브라우저에 보낼 수 있기 때문에 CSRF 공격에 취약합니다. 이 공격은 스푸핑된 이메일, 악성 웹사이트 또는 기타 방법을 통해 수행될 수 있습니다. 방어 조치:
CSRF 공격을 방어하려면 요청의 신뢰성을 확인하는 메커니즘을 구현해야 합니다. 일반적인 방법 중 하나는 토큰을 사용하는 것입니다.<form action="change_password.php" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" /> <!-- 其他表单字段 --> </form>
<?php if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { // 令牌验证失败,拒绝请求 exit('Invalid request'); } ?>
rrreee
이러한 방어를 구현하면 PHP 애플리케이션에 대한 CSRF 공격 위험을 줄일 수 있습니다. 🎜위 내용은 CSRF 공격으로부터 PHP 기능을 보호하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!