>백엔드 개발 >PHP 튜토리얼 >PHP 데이터 필터링: XSS 및 CSRF 공격 방지

PHP 데이터 필터링: XSS 및 CSRF 공격 방지

PHPz
PHPz원래의
2023-07-29 15:33:331479검색

PHP 데이터 필터링: XSS 및 CSRF 공격 방지

인터넷이 발전하면서 네트워크 보안은 사람들의 관심의 초점 중 하나가 되었습니다. 웹 사이트 개발에서는 특히 XSS(교차 사이트 스크립팅 공격) 및 CSRF(교차 사이트 요청 위조 공격) 공격을 방지하기 위해 사용자가 제출한 데이터를 필터링하고 확인하는 것이 매우 중요합니다. 이 기사에서는 PHP를 사용하여 이러한 두 가지 일반적인 보안 취약점을 방지하는 방법을 설명하고 참조용 샘플 코드를 제공합니다.

  1. XSS 공격 방지

XSS 공격은 악의적인 스크립트나 코드를 삽입하여 사용자의 중요한 정보를 훔치거나 악성 코드를 유포하는 방식으로 웹 페이지 콘텐츠를 변조하는 악의적인 공격자를 의미합니다. XSS 공격을 방지하려면 사용자가 입력한 데이터를 필터링하고 이스케이프해야 합니다.

(1) HTML 특수 문자를 이스케이프하려면 htmlspecialchars() 함수를 사용하십시오.

$name = $_POST['name'];
$filtered_name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');

(2) 정규식을 사용하여 사용자 입력을 필터링합니다.

$name = $_POST['name'];
$pattern = '/^[a-zA-Z0-9]+$/';
if (preg_match($pattern, $name)) {
    // 用户输入合法
} else {
    // 用户输入不合法
}
  1. CSRF 공격 방지

CSRF 공격은 공격자가 사용자 정보 수정, 악의적 전송 시작 ​​등 사용자 요청을 위조하여 무단 작업을 수행하는 것을 말합니다. CSRF 공격을 방지하기 위해 다음과 같은 조치를 취할 수 있습니다.

(1) CSRF 토큰 확인을 사용합니다.

session_start();
$csrf_token = bin2hex(random_bytes(32)); // 生成随机的令牌
$_SESSION['csrf_token'] = $csrf_token;

// 在表单中添加令牌
echo "<input type='hidden' name='csrf_token' value='{$csrf_token}'>";

// 验证令牌
if ($_POST['csrf_token'] === $_SESSION['csrf_token']) {
    // 令牌验证通过
} else {
    // 令牌验证失败
}

(2) 요청 소스를 제한합니다.

if ($_SERVER['HTTP_REFERER'] !== 'http://www.example.com') {
    // 请求来源不合法
} else {
    // 请求来源合法
}

요약하자면, 사용자가 제출한 데이터를 필터링하고 확인하는 것은 웹사이트 보안을 보장하는 중요한 단계입니다. HTML 특수 문자를 이스케이프 처리하고, 정규식을 사용하여 사용자 입력을 필터링하고, CSRF 토큰 확인을 사용하고, 요청 소스를 제한함으로써 XSS 및 CSRF 공격을 효과적으로 방지할 수 있습니다. 그러나 보안은 지속적인 프로세스이므로 당사는 웹사이트의 보안을 개선하기 위해 보안 조치를 지속적으로 업데이트하고 강화해야 합니다.

참고자료:

  • PHP 공식 문서(https://www.php.net/)
  • OWASP 공식 홈페이지(https://owasp.org/)

위 내용은 PHP 데이터 필터링: XSS 및 CSRF 공격 방지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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