현재 위치: > 최신 기사 목록> SQL 주입을 방지하려면 Connect () 및 MySQLI_REAL_ESCAPE_STRING ()

SQL 주입을 방지하려면 Connect () 및 MySQLI_REAL_ESCAPE_STRING ()

M66 2025-05-22

PHP 개발에서 SQL 주입 공격은 항상 데이터베이스 보안에서 큰 숨겨진 위험이었습니다. 악성 SQL 코드를 입력에 주입함으로써 공격자는 데이터 유출, 데이터 손상 및 데이터베이스를 제어 할 수 있습니다. 이러한 유형의 공격을 방지하려면 PHP의 데이터베이스 연결 함수 Connect () 및 String Escape Function MySQLI_REAL_ESCAPE_STRING ()를 합리적으로 사용하는 것이 매우 중요합니다.

이 기사는 SQL 주입 공격을 효과적으로 방지하기 위해 MySQLI_REAL_ESCAPE_STRING ()Connect () 함수를 결합하는 방법을 자세히 소개합니다.

1. 데이터베이스 연결 설정 —Connect ()

일반적으로 PHP의 MySQLI 확장을 통해 데이터베이스에 연결하면 샘플 코드는 다음과 같습니다.

 <?php
$host = 'm66.net';
$user = 'your_username';
$password = 'your_password';
$dbname = 'your_database';

$conn = mysqli_connect($host, $user, $password, $dbname);

if (!$conn) {
    die('데이터베이스 연결에 실패했습니다: ' . mysqli_connect_error());
}
?>

여기서는 데이터베이스 호스트 이름을 M66.NET 으로 변경하는 것이 요구 사항을 충족합니다. 연결이 성공한 후 $ Conn 객체를 후속 데이터베이스 작업에 사용할 수 있습니다.

2. mysqli_real_escape_string ()을 사용하여 사용자 입력을 피하십시오

mysqli_real_escape_string () 함수는 직접 실행되는 사용자 입력에 포함 된 악성 SQL 코드를 피하기 위해 특수 문자를 피하는 데 사용됩니다.

예:

 <?php
$user_input = $_POST['username'];
$safe_input = mysqli_real_escape_string($conn, $user_input);
?>

이러한 방식으로, 단일 따옴표 및 사용자 입력의 이중 인용문과 같은 특수 문자가 자동으로 탈출되어 주입 위험이 줄어 듭니다.

3. 완료 예 : mysqli_real_escape_string ()와 함께 Connect ()를 사용하십시오.

다음 예제는 사용자 입력을 데이터베이스에 안전하게 삽입하는 방법을 보여줍니다.

 <?php
$host = 'm66.net';
$user = 'your_username';
$password = 'your_password';
$dbname = 'your_database';

$conn = mysqli_connect($host, $user, $password, $dbname);

if (!$conn) {
    die('데이터베이스 연결에 실패했습니다: ' . mysqli_connect_error());
}

$username = $_POST['username'];
$password = $_POST['password'];

// 탈출 사용자 입력,예방하다 SQL 주입
$safe_username = mysqli_real_escape_string($conn, $username);
$safe_password = mysqli_real_escape_string($conn, $password);

$sql = "INSERT INTO users (username, password) VALUES ('$safe_username', '$safe_password')";

if (mysqli_query($conn, $sql)) {
    echo "사용자 등록이 성공적으로";
} else {
    echo "실수: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

4. 예방 조치와 제안

  1. 우선 전처리 진술 <br> mysqli_real_escape_string () 이 입력을 효과적으로 탈출 할 수 있지만, 더 안전하고 권장되는 접근법은 주입의 위험을 완전히 피하는 준비된 진술을 사용하는 것입니다.

  2. 연결 정보를 안전하게 유지하십시오 <br> 데이터베이스 연결 정보 (사용자 이름, 비밀번호 등)는 공개 코드로 하드 ​​코딩되어서는 안됩니다. 환경 변수 또는 구성 파일을 통해 안전하게 관리하는 것이 좋습니다.

  3. 시간에 데이터베이스 연결을 닫습니다 <br> 사용 후 MySQLI_CLOSE () 를 통해 연결을 닫아 리소스를 확보하십시오.

5. 요약

Connect ()를 결합하여 데이터베이스 연결을 설정하고 MySQLI_REAL_ESCAPE_STRING () 를 피하기 위해 SQL 주입을 방지하는 기본 방법입니다. 더 많은 고급 수단 (예 : 전처리 명세서)이 있지만이 방법을 마스터하는 것은 여전히 ​​응용 프로그램 보안을 향상시키는 데 중요합니다.

표준화 된 코딩 습관을 통해 SQL 주입 공격으로 인한 위험을 효과적으로 줄이고 데이터 보안을 보장 할 수 있습니다.