
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