현재 위치: > 최신 기사 목록> PHP 데이터 필터링 및 보안 관행 : SQL 주입 및 XSS 공격을 효과적으로 방지

PHP 데이터 필터링 및 보안 관행 : SQL 주입 및 XSS 공격을 효과적으로 방지

M66 2025-06-07

PHP 데이터 필터링 : 사용자 입력에서 데이터베이스로의 보안

개요 :
웹 개발에서는 사용자 입력 데이터의 보안을 보장하는 것이 중요합니다. 여과 및 검증 된 입력은 SQL 주입, XSS (Cross-Site Scripting Attack)와 같은 보안 위험을 초래할 수 있습니다. 이 기사는 데이터 필터링 및 검증에 PHP를 사용하는 방법을 소개하여 사용자 입력에서 데이터베이스 스토리지까지 전체 프로세스의 보안을 보장합니다.

입력 필터링

사용자가 제출 한 데이터는 신뢰할 수 없으며 먼저 필터링해야합니다. 일반적인 입력 필터링 기술에는 다음이 포함됩니다.

(1) HTML 탈출

XSS 공격을 방지하려면 사용자 입력의 HTML 태그를 피해야합니다. PHP 내장 기능 htmlspecialchars () 는이 기능을 구현할 수 있습니다.

 $input = $_POST['input'];
$filteredInput = htmlspecialchars($input);

(2) 과도한 공간을 제거하십시오

Trim () 함수를 사용하여 입력 데이터의 양쪽 끝에서 공간을 제거하여 예기치 않은 공간으로 인한 문제를 피하십시오.

 $input = $_POST['input'];
$filteredInput = trim($input);

(3) 특수 문자 필터

입력에 포함 된 특수 문자로 인한 코드 실행 문제를 피하려면 필터링을 위해 Filter_Sanitize_string 필터와 함께 Filter_var () 함수를 사용할 수 있습니다.

 $input = $_POST['input'];
$filteredInput = filter_var($input, FILTER_SANITIZE_STRING);

데이터를 확인하십시오

필터링 외에도 입력 데이터의 합법성도 필요합니다. 일반적인 검증 방법은 다음과 같습니다.

(1) 이메일 확인

Filter_Validate_Email 과 함께 Filter_var ()를 사용하여 이메일 주소 형식을 확인하십시오.

 $email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // 법적 이메일 주소
} else {
    // 불법 이메일 주소
}

(2) URL을 확인하십시오

Filter_Validate_url 과 함께 Filter_var ()를 사용하여 URL 형식을 확인하십시오.

 $url = $_POST['url'];
if (filter_var($url, FILTER_VALIDATE_URL)) {
    // URL정당한
} else {
    // URL불법적인
}

(3) 번호를 확인하십시오

IS_NUMERIC () 함수를 사용하여 입력이 숫자인지 확인하십시오.

 $number = $_POST['number'];
if (is_numeric($number)) {
    // 숫자로 입력
} else {
    // 비 자리를 입력하십시오
}

데이터베이스 보안

데이터베이스에 사용자 데이터를 작성하기 전에 보안을 보장하려면 추가 처리가 필요합니다.

(1) 전처리 진술을 사용하십시오

자리 표시자를 통해 매개 변수를 전달하는 전처리 진술은 SQL 주입을 효과적으로 방지합니다. PHP의 PDO 또는 MySQLI 확장은이 메커니즘을 지원합니다.

 $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $email);
$name = $_POST['name'];
$email = $_POST['email'];
$stmt->execute();

(2) 비밀번호 해시를 사용하십시오

사용자 암호를 저장할 때는 일반 텍스트 저장을 피하고 해싱에 Password_hash () 를 사용하십시오.

 $password = $_POST['password'];
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

요약

데이터 보안은 웹 개발의 핵심 링크입니다. 합리적인 입력 필터링, 검증 및 데이터베이스 보안 조치를 통해 응용 프로그램 보호 기능을 효과적으로 개선하고 잠재적 인 보안 위험을 피할 수 있습니다. 사용자 데이터의 보안을 보장하기 위해 특정 프로젝트가 필요한 경우 이러한 기술을 유연하게 사용하는 것이 좋습니다.