
mysql_real_escape_string 함수는 MySQL의 연결 객체를 필요로 하며, 사용자 입력 데이터를 안전하게.escape하는 데 사용됩니다.
1. MySQL의 연결 객체를 가져와야 합니다. 예를 들어, mysql.connect() 함수를 사용하여 연결을 맺은 후, 연결 객체를 가져옵니다.
2. 사용자 입력 데이터를 변수에 저장합니다.
3. mysql_real_escape_string 함수를 사용하여 변수의 데이터를.escape합니다.
예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
javascript
const mysql = require('mysql');
// MySQL의 연결 객체를 가져옵니다.
const conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'database'
});
// 사용자 입력 데이터를 변수에 저장합니다.
const userInput = 'Robert'); DROP TABLE Students; --';
// mysql_real_escape_string 함수를 사용하여 변수의 데이터를.escape합니다.
const escapedInput = conn.escape(userInput);
// escape() 함수를 사용하여 쿼리를 생성합니다.
const query = `INSERT INTO Students (name) VALUES (${escapedInput})`;
// 쿼리를 실행합니다.
conn.query(query, (err, results) => {
if (err) {
console.error(err);
} else {
console.log(results);
}
});
mysql_real_escape_string 함수 대신에, prepared statements를 사용하는 것을 추천합니다. prepared statements는 SQL 인젝션 공격에 더 안전하고, 코드를 더 읽기 쉽게 만듭니다.
예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
javascript
const mysql = require('mysql');
// MySQL의 연결 객체를 가져옵니다.
const conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'database'
});
// 사용자 입력 데이터를 변수에 저장합니다.
const userInput = 'Robert'); DROP TABLE Students; --';
// prepared statements를 사용하여 쿼리를 생성합니다.
const query = 'INSERT INTO Students (name) VALUES ?';
// 쿼리를 실행합니다.
conn.query(query, [userInput], (err, results) => {
if (err) {
console.error(err);
} else {
console.log(results);
}
});
prepared statements를 사용하는 것은 더 안전하고, 코드를 더 읽기 쉽게 만듭니다.
2025-07-17 21:50