현재 위치: > 최신 기사 목록> PHP Real_escape_string 및 MySQLI의 기본 사용

PHP Real_escape_string 및 MySQLI의 기본 사용

gitbox 2025-05-27

웹 개발에 PHP를 사용할 때는 데이터베이스를 운영하는 것이 매일 작업에서 가장 일반적인 작업 중 하나입니다. SQL 주입과 같은 보안 문제를 방지하려면 사용자가 입력 한 데이터에 대한 적절한 탈출 처리를 수행해야합니다. MySQL 데이터베이스를 사용할 때 PHP의 MySQLI Extension은 일반적으로 사용되는 안전한 기능을 제공합니다. real_escape_string 은 문자열을 탈출하는 데 사용되어 데이터베이스 작업의 보안을 향상시킵니다.

1. MySQLI 확장 소개

MySQLI (MySQL 개선) 확장자는 MySQL 데이터베이스와 상호 작용하기위한 PHP의 확장 모듈입니다. 초기 MySQL 확장과 비교하여 MySQLI는 전처리 명세서 지원, 트랜잭션 제어 및보다 완전한 오류 처리 메커니즘과 같은 더 풍부한 기능을 제공합니다.

MySQLI 확장자를 사용하려면 먼저 다음과 같이 데이터베이스 연결 객체를 작성해야합니다.

<code> $ host = 'localhost'; $ user = 'db_user'; $ password = 'db_password'; $ database = 'test_db';

$ conn = new MySqli ($ host, $ user, $ password, $ database);

if ($ conn-> connect_error) {
다이 ( '연결 실패 :'. $ conn-> connect_error);
}
</코드>

이 코드는 MySQLI 생성자를 사용하여 MySQL 서버와의 연결을 설정하고 연결이 성공했는지 여부를 결정합니다.

2. real_escape_string 함수 사용

Real_escape_string 은 SQL 문에 사용 된 문자열을 피하기 위해 MySQLI 객체가 제공하는 메소드입니다. 이렇게하면 특수 문자 (예 : 따옴표, 백 슬래시 등)가 SQL 구문을 파괴하는 것을 방지하여 SQL 주입 공격을 효과적으로 방지 할 수 있습니다.

일반적인 사용법은 다음과 같습니다.

<code> $ user_input = "O'Reilly"; $ safe_input = $ conn-> real_escape_string ($ user_input); $ sql = "name = '$ safe_input'"이있는 사용자에서 선택 *; $ result = $ conn-> query ($ sql); </코드>

이 예에서는 사용자가 입력 한 O'Reilly가 탈출되지 않으면 SQL 문에 오류가 발생하거나 보안 문제가 발생합니다. real_escape_string 메소드는 단일 따옴표를 O \ 'reilly 로 자동으로 빠져 나와 합법적이고 안전한 SQL 문을 구성합니다.

3. 주목할만한 것들

  1. 데이터베이스 연결 후 사용해야합니다
    Real_escape_string은 현재 연결의 문자 세트에 따라 달라 지므로 연결이 성공한 후에 호출해야합니다.

  2. 전처리 진술을 대체하는 것과 같지 않습니다 . <br> Real_escape_string은 약간의 보안을 제공 할 수 있지만 전처리 문을 완전히 대체 할 수는 없습니다. 전처리 진술은 SQL 주입을 방지하는 가장 안전한 방법입니다.

  3. 캐릭터 세트는 일관성이 있어야합니다 <br> PHP와 데이터베이스가 사용하는 문자 세트가 일관성이 있는지 확인하십시오 (예 : UTF8MB4).

4. HTML 형태를 결합하는 실제 예

다음은 HTML 양식을 사용하여 사용자 입력을 받고 real_escape_string 을 통해 처리하는 예입니다.

<code> & lt; form method = "post"action = "https://gitbox.net/process.php"& gt; 사용자 이름 : & lt; input type = "text"name = "username"& gt; & lt; 입력 유형 = "제출"값 = "제출"& gt; & lt;/form & gt; </코드>

프로세스 프로세스 .php :

<code> $ conn = new MySqli ( 'localhost', 'user', 'password', 'database');

if ($ conn-> connect_error) {
다이 ( '연결 실패 :'. $ conn-> connect_error);
}

$ username = $ _post [ 'username'];
$ safe_username = $ conn-> real_escape_string ($ username);

$ sql = "username = '$ safe_username'";
$ result = $ conn-> query ($ sql);

if ($ result && $ result-> num_rows> 0) {
Echo "사용자는 이미 존재합니다";
} 또 다른 {
Echo "사용자는 존재하지 않습니다";
}
</코드>

5. 요약

mysqli :: real_escape_string은 SQL 주입을 방지하기위한 PHP의 중요한 도구 중 하나입니다. 사용자 입력에서 특수 문자를 피함으로써 SQL 문의 정당성을 보호합니다. 그러나 보안을 강화하기 위해 개발자는 전처리 진술의 사용 우선 순위를 정해야합니다. Real_escape_string 의 기본 사용법을 이해 한 후 사용자 입력을보다 자신있게 처리하고 데이터베이스와 안전하게 상호 작용할 수 있습니다.