현재 위치: > 최신 기사 목록> SQL 주입 공격을 효과적으로 방지하기 위해 PHP에서 Real_escape_string 함수를 사용하는 방법은 무엇입니까?

SQL 주입 공격을 효과적으로 방지하기 위해 PHP에서 Real_escape_string 함수를 사용하는 방법은 무엇입니까?

gitbox 2025-06-10

real_escape_string 이란 무엇입니까?

Real_escape_stringMySQLI 확장자의 메소드로, 주로 문자열에서 특수 문자를 피하는 데 사용되므로 악성 SQL 코드가 실행되는 것을 방지합니다. 위험한 캐릭터 전에 Backslash ( \ )를 자동으로 추가하여 SQL 구문에서 특별한 의미를 잃게됩니다.

언제 real_escape_string을 사용해야합니까?

사용자 입력이 SQL 문에 직접 접합되는 모든 상황에서는 입력 컨텐츠를 피해야합니다. 그렇지 않으면 공격자는 입력을 사용하여 악의적 진술을 구성하여 데이터베이스 작업의 논리를 변경할 수 있습니다.

real_escape_string을 올바르게 사용하는 방법은 무엇입니까?

다음은 real_escape_string을 사용하여 사용자 입력을 안전하게 처리하는 방법을 보여주는 간단한 예입니다.

<code> & lt;? php // mysqli connection 만들기 $ conn = new mysqli ( 'gitbox.net', 'username', 'password', 'database');

// 연결이 성공했는지 확인하십시오
if ($ conn-> connect_error) {
다이 ( "연결 실패 :". $ conn-> connect_error);
}

// 사용자가 양식을 통해 사용자 이름을 제출했다고 가정합니다.
$ user_input = $ _post [ 'username'];

// real_escape_string을 사용하여 사용자 입력을 피하십시오
$ safe_input = $ conn-> real_escape_string ($ user_input);

// SQL 쿼리 문을 작성합니다
$ sql = "사용자에서 username = '$ safe_input'";

// 쿼리를 실행합니다
$ result = $ conn-> query ($ sql);

if ($ result-> num_rows> 0) {
// 프로세스 쿼리 결과
while ($ row = $ result-> fetch_assoc ()) {
Echo "사용자 ID :". $ 행 [ "ID"]. " - 사용자 이름 :". $ 행 [ "사용자 이름"]. "<br>";
}
} 또 다른 {
Echo "일치하는 사용자는 찾을 수 없습니다.";
}

$ conn-> close ();
?>
</코드>

real_escape_string이 SQL 주입을 방지 할 수있는 이유는 무엇입니까?

real_escape_string은 단일 따옴표 ( ' ), 이중 인용문 ( " ), 백 슬래시 ( \ ) 등과 같이 SQL 엔진에서 오해 할 수있는 문자열에서 문자를 식별 할 수 있으며, 이들이 문자가 SQL 문 구조의 특수한 중요성을 잃어 버리기 코드의 실행을 방지합니다.

주목해야 할 것

  1. 연결이 설정되어 있어야합니다 . Real_escape_string은 데이터베이스 연결 상태에 따라 달라지며 연결 전에 호출되지 않아야합니다.

  2. 응용 범위 :이 기능은 문자열 탈출에만 적합하며 더 안전한 준비된 진술을 대체 할 수 없습니다.

  3. 전처리 명세서를 사용하는 것이 좋습니다 . real_escape_string 이 효과적이지만 SQL 쿼리의 경우 MySQLI 또는 PDO 의 전처리 문을 사용하는 것이 좋습니다.

  • 관련 태그:

    SQL