개발자 Q&A

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

2025.05.21 09:24

mysqli::escape_string 함수 사용 중 오류 발생

목록
  • Express킬러 9일 전 2025.05.21 09:24
  • 15
    1
선생님, mysqli::escape_string 함수를 사용하여 데이터를 안전하게 처리하려고 하는데, 그 중 한 부분이 이해가 가지 않습니다.

mysql_insert_id() 함수와 mysqli::escape_string 함수를 함께 사용할 때, escape_string 함수가 insert_id 함수의 결과에 영향을 미치는지 궁금합니다.

예를 들어, 다음 코드를 보겠습니다.

php

$conn = mysqli_connect("localhost", "root", "password", "test");



mysqli_query($conn, "INSERT INTO test_table (id, name) VALUES (NULL, 'John Doe')");



$last_id = mysql_insert_id($conn);

$escaped_name = mysqli::escape_string($name);



echo $last_id . "n";

echo $escaped_name . "n";



위 코드에서 $last_id와 $escaped_name의 출력값이 어떻게 될까요?

그리고 escape_string 함수를 사용하여 데이터를 안전하게 처리하는 이유에 대하여도 설명해주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  9일 전



    mysqli::escape_string 함수는 입력된 문자열을 MySQL에서 사용하는 문자열 인코딩 방식인 UTF-8에 맞게 인코딩하고, 특수 문자를 이스케이프 처리하여 SQL 삽입 공격을 방지하는 함수입니다.

    mysql_insert_id 함수는 마지막 INSERT 문으로 생성된 ID를 반환하는 함수입니다.

    위 코드에서 $last_id와 $escaped_name의 출력값은 다음과 같습니다.

    - $last_id: INSERT INTO test_table (id, name) VALUES (NULL, 'John Doe'); 문으로 생성된 ID가 출력됩니다.
    - $escaped_name: 'John Doe' 문자열이 이스케이프 처리된 문자열이 출력됩니다. 예를 들어, 'John Doe'가 'John Doe'가 아닌 'John Doe'로 출력됩니다.

    mysqli::escape_string 함수를 사용하여 데이터를 안전하게 처리하는 이유는 SQL 삽입 공격을 방지하기 위함입니다. SQL 삽입 공격은 공격자가 입력한 데이터를 SQL 문으로 사용하여 데이터베이스를 조작하는 공격입니다. 이스케이프 처리를 통해 입력된 데이터가 SQL 문으로 사용되지 않도록 처리하여 SQL 삽입 공격을 방지할 수 있습니다.

    예를 들어, 공격자가 입력한 데이터가 다음과 같을 경우, 이스케이프 처리를 하지 않으면 SQL 삽입 공격이 발생할 수 있습니다.

    - 입력 데이터: ' OR 1=1;

    이스케이프 처리를 통해 입력된 데이터가 다음과 같이 처리됩니다.

    - 입력 데이터: ' OR 1=1; -> ' OR 1=1;

    이러한 이스케이프 처리를 통해 SQL 삽입 공격을 방지할 수 있습니다.

    2025-05-21 09:25

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

검색

게시물 검색