개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.24 16:16

mysqli::real_escape_string 함수에 대한 질문

목록
  • 정렬연구가 1일 전 2025.07.24 16:16
  • 11
    1
안녕하세요 선생님, PHP에서 데이터베이스에 접근할 때 SQL 인젝션 공격을 막기 위해 mysqli::real_escape_string 함수를 사용하려고하는데요.

이 함수는 어떤 역할을 하는지 정확히 모르겠습니다.

예를 들어, 사용자가 입력한 이름이 "John' OR 1=1 --"이라면, 이 이름을 데이터베이스에 저장할 때 SQL 인젝션 공격을 막을 수 있는 방법이 뭔가요?

mysqli::real_escape_string 함수를 사용하면 이 이름을 어떻게 처리할 수 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    mysqli::real_escape_string 함수는 사용자가 입력한 데이터를 SQL 쿼리에 삽입하기 전에 이스케이프 처리를 해주는 함수입니다. 이스케이프 처리란 특수 문자를 일반 문자로 변환하는 것을 의미합니다.

    예를 들어, 사용자가 입력한 이름이 "John' OR 1=1 --"이라면, 이 이름을 데이터베이스에 저장할 때 SQL 인젝션 공격을 막을 수 있는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $mysqli = new mysqli("localhost", "username", "password", "database");
    
    
    
    $name = "John' OR 1=1 --";
    
    
    
    $escaped_name = $mysqli->real_escape_string($name);
    
    
    
    $query = "INSERT INTO users (name) VALUES ('$escaped_name')";
    
    
    
    $mysqli->query($query);
    
    
    
    $mysqli->close();
    
    


    mysqli::real_escape_string 함수를 사용하면, 사용자가 입력한 이름이 "John' OR 1=1 --"인 경우, 이 이름을 다음과 같이 이스케이프 처리합니다.

    #hostingforum.kr
    php
    
    $escaped_name = "John' OR 1=1 --";
    
    


    이렇게 이스케이프 처리된 이름을 데이터베이스에 저장하면, SQL 인젝션 공격을 막을 수 있습니다.

    mysqli::real_escape_string 함수는 PHP 5.3.6부터 deprecated되었으며, PHP 7.0부터는 사용할 수 없습니다. 대신, prepared statement를 사용하는 것을 권장합니다.

    #hostingforum.kr
    php
    
    $mysqli = new mysqli("localhost", "username", "password", "database");
    
    
    
    $stmt = $mysqli->prepare("INSERT INTO users (name) VALUES (?)");
    
    
    
    $name = "John' OR 1=1 --";
    
    
    
    $stmt->bind_param("s", $name);
    
    
    
    $stmt->execute();
    
    
    
    $stmt->close();
    
    
    
    $mysqli->close();
    
    


    prepared statement를 사용하면, SQL 인젝션 공격을 막을 수 있습니다.

    2025-07-24 16:17

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 38,899건 / 4 페이지

검색

게시물 검색