$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 유효한 이메일 주소,계속 처리하십시오
} else {
// 잘못된 이메일 주소,오류 메시지를 표시합니다
}
여기에서 Filter_Input ()은 먼저 입력, Filter_var ()를 정리 한 다음 합법성을 더 확인합니다. 조합 사용은 유효하지 않거나 악의적 인 데이터가 비즈니스 로직 계층에 들어가는 것을 효과적으로 방지 할 수 있습니다.
$phone = $_POST['phone'];
$pattern = "/^(\+?\d{1,3}-)?\d{10}$/";
if (preg_match($pattern, $phone)) {
// 전화 번호가 유효합니다,계속 처리하십시오
} else {
// 잘못된 전화 번호,사용자에게 프롬프트
}
이 예제에 사용 된 정규 표현식은 선택적 국가 지역 코드 접두사를 지원하며 전화 번호는 10 자리 숫자가되어 입력 검증의 정확도를 효과적으로 향상시킵니다.
$comment = $_POST['comment'];
$encoded_comment = htmlspecialchars($comment);
// 인코딩 된 주석을 데이터베이스에 저장하거나 페이지에 표시합니다.
공격자가 스크립트 태그를 주입하더라도 <and> 와 같은 특수 문자를 탈출함으로써 브라우저에서 구문 분석 및 실행되지 않으므로 악의적 인 동작을 피할 수 있습니다.
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(":username", $username);
$username = $_POST['username'];
$stmt->execute();
직접 스 플라이 싱 문자열 대신 파라미터를 바인딩하면 입력 데이터가 자동으로 빠져 나와 주입 동작을 효과적으로 방지 할 수 있습니다.