> 데이터 베이스 > MySQL 튜토리얼 > `mysqli_real_escape_string`은 SQL 주입 공격을 방지하기에 충분합니까?

`mysqli_real_escape_string`은 SQL 주입 공격을 방지하기에 충분합니까?

Linda Hamilton
풀어 주다: 2024-12-20 00:41:12
원래의
244명이 탐색했습니다.

Is `mysqli_real_escape_string` Enough to Prevent SQL Injection Attacks?

"mysqli_real_escape_string"이 SQL 공격 예방에 적합합니까?

제공된 코드는 mysqli_real_escape_string을 활용하여 SQL 삽입을 방지합니다. 그러나 이 기능만으로는 완전한 보호가 불가능하다는 점에 유의하는 것이 중요합니다.

SQL 주입 취약점

mysqli_real_escape_string을 사용함에도 불구하고 코드는 여전히 SQL 주입 공격에 취약합니다. . 이는 문자열 연결을 사용하여 SQL 쿼리를 조합하는데, 이를 통해 공격자가 양식 입력을 통해 악성 코드를 주입하여 쿼리를 조작할 수 있기 때문입니다.

권장 솔루션: 준비된 명령문

SQL 주입을 방지하는 가장 효과적인 방법은 준비된 문을 이용하는 것입니다. 쿼리 명령에서 데이터 매개변수를 분리하여 오염 가능성을 제거합니다. 예는 다음과 같습니다.

$stmt = $db_con->prepare("INSERT INTO `users` (`email`, `psw`) VALUES (?, ?)");
$stmt->bind_param("ss", $email, $psw);
$stmt->execute();
로그인 후 복사

추가 보안 조치

준비된 진술이 가능하지 않은 경우 다음을 고려하세요.

  • 화이트리스트 검증: 사전 정의된 허용 세트로 사용자 입력을 제한합니다. 값.
  • 유형 캐스팅: 값이 의도한 유형으로 올바르게 변환되어 악성 코드 실행을 방지하는지 확인하세요.
  • 에뮬레이트된 준비된 문 비활성화: MySQL을 사용하는 경우 $db_con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 보안을 강화합니다.

이러한 조치를 구현하면 SQL 삽입 및 기타 SQL 공격에 대비하여 애플리케이션의 보안을 크게 강화할 수 있습니다.

위 내용은 `mysqli_real_escape_string`은 SQL 주입 공격을 방지하기에 충분합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿