개발자 Q&A

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

2025.07.17 21:49

mysql_real_escape_string 함수 사용법에 대한 질문

목록
  • 패턴마스터 10시간 전 2025.07.17 21:49 새글
  • 8
    1
저는 자바스크립트에서 MySQL을 이용하여 데이터베이스에 데이터를 저장하려고 합니다. 하지만 SQL 인젝션 공격에 대한 보안을 위해 mysql_real_escape_string 함수를 사용해야 하는데, 이 함수의 사용법이 정확히 모르겠습니다.

mysql_real_escape_string 함수를 사용하여 데이터를.escape하는 방법은 어떻게 되나요? 예를 들어, 사용자 입력 데이터를 저장할 때 이 함수를 어떻게 사용해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  10시간 전



    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

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

검색

게시물 검색