
addslashes 함수는 PHP에서 사용되는 문자열 함수로, 특수 문자를 이스케이프 처리하는 함수입니다.
예를 들어, 다음과 같은 코드를 작성했습니다.
#hostingforum.kr
php
$data = $_POST['name'];
$mysql_query = "SELECT * FROM users WHERE name = '$data'";
이 코드에서, addslashes 함수를 사용하면 다음과 같이 데이터가 처리됩니다.
#hostingforum.kr
php
$data = addslashes($_POST['name']);
$mysql_query = "SELECT * FROM users WHERE name = '$data'";
addslashes 함수는 데이터에 있는 특수 문자를 이스케이프 처리하여 SQL 인젝션 공격을 방지합니다. 예를 들어, 데이터에 ' 또는 " 문자가 포함되어 있다면, addslashes 함수를 사용하여 이스케이프 처리하면 다음과 같이 처리됩니다.
#hostingforum.kr
php
$data = 'John's';
$mysql_query = "SELECT * FROM users WHERE name = '$data'";
이 코드에서, addslashes 함수를 사용하여 데이터에 있는 ' 문자를 이스케이프 처리하면 다음과 같이 처리됩니다.
#hostingforum.kr
php
$data = addslashes('John's');
$mysql_query = "SELECT * FROM users WHERE name = '$data'";
이 코드에서, 데이터는 다음과 같이 처리됩니다.
#hostingforum.kr
php
$data = 'John's';
$mysql_query = "SELECT * FROM users WHERE name = 'John\'s'";
addslashes 함수를 사용할 때 주의할 점은, 이 함수는 데이터를 이스케이프 처리하여 SQL 인젝션 공격을 방지하지만, 데이터를 이스케이프 처리한 후에 데이터를 다시 이스케이프 처리하면 데이터가 손상될 수 있습니다.
예를 들어, 다음과 같은 코드를 작성했습니다.
#hostingforum.kr
php
$data = addslashes(addslashes($_POST['name']));
$mysql_query = "SELECT * FROM users WHERE name = '$data'";
이 코드에서, addslashes 함수를 두 번 사용하여 데이터를 이스케이프 처리하면, 데이터가 손상될 수 있습니다.
SQL 인젝션 공격을 방지하는 다른 방법은, prepared statement를 사용하는 것입니다. prepared statement는 데이터를 이스케이프 처리하여 SQL 인젝션 공격을 방지합니다.
예를 들어, 다음과 같은 코드를 작성했습니다.
#hostingforum.kr
php
$stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?");
$stmt->bind_param("s", $_POST['name']);
$stmt->execute();
이 코드에서, prepared statement를 사용하여 데이터를 이스케이프 처리하여 SQL 인젝션 공격을 방지합니다.
2025-05-21 04:54