개요 :
웹 개발에서는 사용자 입력 데이터의 보안을 보장하는 것이 중요합니다. 여과 및 검증 된 입력은 SQL 주입, XSS (Cross-Site Scripting Attack)와 같은 보안 위험을 초래할 수 있습니다. 이 기사는 데이터 필터링 및 검증에 PHP를 사용하는 방법을 소개하여 사용자 입력에서 데이터베이스 스토리지까지 전체 프로세스의 보안을 보장합니다.
사용자가 제출 한 데이터는 신뢰할 수 없으며 먼저 필터링해야합니다. 일반적인 입력 필터링 기술에는 다음이 포함됩니다.
XSS 공격을 방지하려면 사용자 입력의 HTML 태그를 피해야합니다. PHP 내장 기능 htmlspecialchars () 는이 기능을 구현할 수 있습니다.
$input = $_POST['input'];
$filteredInput = htmlspecialchars($input);
Trim () 함수를 사용하여 입력 데이터의 양쪽 끝에서 공간을 제거하여 예기치 않은 공간으로 인한 문제를 피하십시오.
$input = $_POST['input'];
$filteredInput = trim($input);
입력에 포함 된 특수 문자로 인한 코드 실행 문제를 피하려면 필터링을 위해 Filter_Sanitize_string 필터와 함께 Filter_var () 함수를 사용할 수 있습니다.
$input = $_POST['input'];
$filteredInput = filter_var($input, FILTER_SANITIZE_STRING);
필터링 외에도 입력 데이터의 합법성도 필요합니다. 일반적인 검증 방법은 다음과 같습니다.
Filter_Validate_Email 과 함께 Filter_var ()를 사용하여 이메일 주소 형식을 확인하십시오.
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 법적 이메일 주소
} else {
// 불법 이메일 주소
}
Filter_Validate_url 과 함께 Filter_var ()를 사용하여 URL 형식을 확인하십시오.
$url = $_POST['url'];
if (filter_var($url, FILTER_VALIDATE_URL)) {
// URL정당한
} else {
// URL불법적인
}
IS_NUMERIC () 함수를 사용하여 입력이 숫자인지 확인하십시오.
$number = $_POST['number'];
if (is_numeric($number)) {
// 숫자로 입력
} else {
// 비 자리를 입력하십시오
}
데이터베이스에 사용자 데이터를 작성하기 전에 보안을 보장하려면 추가 처리가 필요합니다.
자리 표시자를 통해 매개 변수를 전달하는 전처리 진술은 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();
사용자 암호를 저장할 때는 일반 텍스트 저장을 피하고 해싱에 Password_hash () 를 사용하십시오.
$password = $_POST['password'];
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
데이터 보안은 웹 개발의 핵심 링크입니다. 합리적인 입력 필터링, 검증 및 데이터베이스 보안 조치를 통해 응용 프로그램 보호 기능을 효과적으로 개선하고 잠재적 인 보안 위험을 피할 수 있습니다. 사용자 데이터의 보안을 보장하기 위해 특정 프로젝트가 필요한 경우 이러한 기술을 유연하게 사용하는 것이 좋습니다.