PHP 주입 공격을 방지하는 방법은 다음과 같습니다. 매개변수화된 쿼리를 사용하여 SQL 주입을 방지합니다. 필터 입력 기능을 사용하여 전달된 값을 필터링합니다. 특수 문자를 이스케이프하려면 mysqli_real_escape_string() 함수를 사용하십시오. 화이트리스트 및 블랙리스트 검증을 사용하여 위험한 문자나 패턴을 필터링합니다.
PHP 인젝션 공격을 예방하는 효과적인 방법
PHP 인젝션 공격은 PHP 애플리케이션의 취약점을 악용하여 악성 SQL 쿼리를 삽입하는 공격 유형입니다. 이러한 공격은 데이터 유출, 데이터베이스 손상 또는 시스템 탈취로 이어질 수 있습니다.
예방 방법
1. 매개변수화된 쿼리
매개변수화된 쿼리를 사용하면 SQL 삽입 공격을 예방할 수 있습니다. 이 기술은 자리 표시자(?)를 사용하여 SQL 쿼리의 실제 값을 대체하고 쿼리를 실행하기 전에 해당 값을 MySQL에 전달합니다.
샘플 코드:
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username);
2. 필터 기능
을 사용하여 입력을 필터링하여 주입 공격을 방지합니다. 들어오는 값은 PHP의 filter_input()
함수를 사용하여 필터링할 수 있습니다. filter_input()
函数过滤传入的值。
示例代码:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
3. 转义特殊字符
可以使用 mysqli_real_escape_string()
샘플 코드:
$username = mysqli_real_escape_string($conn, $username);
3. 특수 문자 이스케이프
mysqli_real_escape_string()
함수를 사용하면 입력 특수 문자가 SQL 명령으로 해석되는 것을 방지할 수 있습니다. 샘플 코드:
// 白名单 $allowed_chars = ['a', 'b', 'c']; if (!in_array($char, $allowed_chars)) { // 输出错误消息 } // 黑名单 $banned_chars = ['<', '>', '"', '\'']; if (preg_match('/[' . implode('', $banned_chars) . ']/', $input)) { // 输出错误消息 }
4. 화이트리스트 및 블랙리스트 확인 사용
화이트리스트 및 블랙리스트 확인은 위험한 문자나 패턴을 필터링할 수 있습니다.예제 코드:
// 获取用户输入 $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING); // 准备和执行查询 $stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute();
실용적인 예
🎜🎜다음은 삽입 공격을 방지하기 위해 매개변수화된 쿼리 및 필터 기능을 사용하는 방법을 보여주는 코드 예입니다. 🎜rrreee🎜🎜결론🎜🎜🎜이러한 예방 조치를 구현하면 주입 공격으로부터 PHP 애플리케이션을 보호할 수 있습니다. 🎜위 내용은 PHP 주입 공격을 예방하는 효과적인 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!