PHP의 addslashes() 함수는 문자열 내에서 미리 정의된 특수 문자 앞에 백슬래시(\)를 추가하여 반환하는 내장 함수입니다. 주로 데이터베이스 쿼리를 생성할 때 특수 문자로 인한 문법 오류나 SQL 인젝션 공격을 예방하기 위해 사용됩니다.
addslashes()가 이스케이프 처리하는 사전 정의 문자는 다음과 같습니다.
- 작은따옴표 (')
- 큰따옴표 (")
- 백슬래시 (\)
- NULL
구문
addslashes(str)
매개변수
str − 이스케이프 처리할 대상 문자열을 지정합니다.
반환값
미리 정의된 특수 문자 앞에 백슬래시(\)가 추가된 문자열을 반환합니다.
예제 1
다음은 addslashes() 함수의 기본적인 사용 예시입니다.
<?php
$s = "Who's Tom Hanks?";
echo $s . " Unsafe for database query!<br>";
echo addslashes($s) . " Safe in a database query!";
?>
출력 결과
Who's Tom Hanks? Unsafe for database query!
Who\'s Tom Hanks? Safe in a database query!
위 예제를 보면, 원본 문자열의 작은따옴표(')는 그대로 출력되어 데이터베이스 쿼리에서 문제를 일으킬 수 있지만, addslashes()를 적용하면 Who\'s처럼 작은따옴표 앞에 백슬래시가 추가되어 쿼리에서 안전하게 사용할 수 있습니다.
예제 2
큰따옴표가 포함된 문자열에 적용한 또 다른 예제입니다.
<?php
$s = addslashes('Cricket is a “religion” in India.');
echo($s);
?>
출력 결과
Cricket is a \“religion\” in India.
큰따옴표 역시 이스케이프 처리되어 문자열이 안전하게 유지되는 것을 확인할 수 있습니다.
참고 사항
최신 PHP 개발 환경에서는 addslashes()보다 PDO 또는 MySQLi의 Prepared Statements(준비된 구문)를 사용하는 것이 보안 측면에서 더 권장됩니다. Prepared Statements는 SQL 인젝션을 근본적으로 차단할 수 있는 더 강력한 방법이기 때문입니다.