인터넷 기술의 지속적인 발전으로 웹 양식은 웹사이트에서 없어서는 안 될 기능 중 하나가 되었습니다. 등록, 로그인, 댓글 달기, 구독 여부에 관계없이 이러한 기능을 사용하려면 사용자가 양식을 작성해야 합니다. 그러나 이는 웹 양식이 다양한 보안 위협에 노출된다는 의미이기도 합니다. 이러한 위협에 대응하여 이 기사에서는 웹 애플리케이션을 보호하는 데 도움이 되는 몇 가지 PHP 양식 보호 기술을 소개합니다.
교차 사이트 스크립팅 공격은 공격자가 악성 코드를 삽입하여 사용자의 중요한 정보를 탈취하는 일반적인 웹 보안 위협입니다. XSS 공격을 방지하기 위해 PHP 내장 함수 htmlspecialchars()를 통해 사용자가 입력한 데이터를 인코딩할 수 있습니다. 예:
<?php $name = $_POST['name']; echo 'Hello, ' . htmlspecialchars($name); ?>
위 코드에서 htmlspecialchars()는 모든 특수 문자(예: 95ec6993dc754240360e28e0de8de30a, & 및 ")를 해당 HTML 엔터티로 변환하여 XSS 공격을 방지합니다.
사용자 입력에 너무 길거나, 너무 짧거나, 잘못된 문자가 포함되어 있는 등 다양한 잘못된 상황이 있을 수 있습니다. 이러한 문제를 방지하려면 내장 함수 strlen() 및 preg_match()를 사용하여 확인하고 확인할 수 있습니다. 예:
<?php $name = $_POST['name']; if(strlen($name) > 20) { echo '用户名太长'; } else if(preg_match('/[^a-z0-9]/i', $name)) { echo '用户名包含非法字符'; } else { // 用户名合法,继续执行其他操作 } ?>
위 코드에서 strlen()은 사용자 이름 길이를 확인하는 데 사용되며, preg_match()는 사용자 이름에 잘못된 문자가 포함되어 있는지 확인하는 데 사용되며, 사용자 이름이 잘못된 경우 해당 오류가 발생합니다.
확인 코드는 로봇의 악의적인 공격을 방지하기 위해 일반적으로 사용되는 도구입니다. 사용자가 양식을 작성할 때 확인 코드를 입력하도록 요청할 수 있습니다. PHP GD 라이브러리에서 생성된 이미지 확인 코드를 통해 사용자 입력이 합법적인지 여부. 예:
<?php session_start(); if($_POST) { if(strtolower($_POST['captcha']) == strtolower($_SESSION['captcha'])) { // 验证码输入正确,继续执行其他操作 } else { echo '验证码输入错误'; } } $captcha = rand(1000, 9999); $_SESSION['captcha'] = $captcha; $img = imagecreate(50, 20); $bg = imagecolorallocate($img, 255, 255, 255); $fg = imagecolorallocate($img, 0, 0, 0); imagestring($img, 5, 10, 3, $captcha, $fg); header('Content-type: image/png'); imagepng($img); imagedestroy($img); ?>
위 코드에서 사용자가 양식을 제출하면 세션을 시작하는 데 사용됩니다. 코드가 올바르게 입력되면 다른 작업을 계속 수행합니다. 그렇지 않으면 captcha 변수를 사용하여 인증 코드 입력 오류 메시지를 반환합니다. img 변수는 인증 코드 이미지를 생성하는 데 사용됩니다. 함수는 이미지 형식을 PNG로 설정하는 데 사용됩니다.
SQL 주입 공격은 공격자가 SQL 문을 주입하여 데이터베이스의 데이터를 획득하거나 변조하는 일반적인 웹 보안 위협입니다. 주입 공격의 경우 명령 매개변수화를 사용하여 사용자가 입력한 데이터를 필터링할 수 있습니다. 예:
<?php $stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email'); $stmt->execute(array('email' => $_POST['email'])); $user = $stmt->fetch(); ?>
위 코드에서 $stmt 변수는 쿼리 작업의 경우 실행() 함수를 사용하여 설정합니다. 사용자가 입력한 이메일 매개변수 값 PDO 명령 매개변수화는 자동으로 악성 코드를 필터링하여 SQL 주입 공격을 방지하는 데 도움이 됩니다. 안티바이러스 API를 사용하여 악성 파일 업로드를 탐지하는 것은 웹 양식에서 일반적으로 사용되는 기능 중 하나입니다. 업로드된 파일이 안전한지 확인하려면 바이러스 백신 API를 사용하여 파일 업로드가 안전한지 확인할 수 있습니다. 예:
<?php if($_FILES) { $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); $tmp_file = $_FILES['file']['tmp_name']; if(class_exists('ClamAV')) { $clamav = new ClamAV(); $result = $clamav->scan($tmp_file); if(!$result) { echo '文件上传失败:包含恶意代码'; } else { $filename = uniqid('file_') . '.' . $ext; move_uploaded_file($tmp_file, dirname(__FILE__) . '/uploads/' . $filename); echo '文件上传成功'; } } else { // 若未找到Antivirus API,则提供默认处理方式 $filename = uniqid('file_') . '.' . $ext; move_uploaded_file($tmp_file, dirname(__FILE__) . '/uploads/' . $filename); echo '文件上传成功'; } } ?>
위 내용은 PHP 양식 보호 팁: 보호 백엔드 스크립트 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!