개발자 Q&A

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

2025.06.07 19:41

odbc_exec 함수 사용 시 SQL Injection 공격에 대한 보안

목록
  • 리액트광 7일 전 2025.06.07 19:41
  • 10
    1
저는 PHP로 데이터베이스와 통신할 때 odbc_exec 함수를 사용하고 있습니다.
하지만, SQL Injection 공격에 대한 보안에 대해 궁금합니다.
odbc_exec 함수에서 파라미터를 안전하게 전달할 수 있는 방법은 무엇인가요?
그리고, SQL Injection 공격을 방지하기 위해 어떤 설정이나 코드를 추가해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  7일 전



    odbc_exec 함수는 SQL 명령을 실행하는 데 사용되며, 파라미터를 안전하게 전달하는 방법은 다음과 같습니다.

    1. Parameterized Query: odbc_exec 함수에 파라미터를 직접 전달하는 대신, SQL 명령에 '?' 또는 ':'를 사용하여 파라미터를 표시하고, 파라미터의 실제 값을 별도로 전달하는 방법입니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $sql = "SELECT * FROM 테이블 WHERE 컬럼 = ?";
    
    $params = array($변수);
    
    $result = odbc_exec($conn, $sql, $params);
    
    


    2. Prepared Statement: odbc_exec 함수를 사용하는 대신, odbc_prepare 함수를 사용하여 SQL 명령을 미리 준비하고, odbc_execute 함수를 사용하여 파라미터를 전달하는 방법입니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt = odbc_prepare($conn, "SELECT * FROM 테이블 WHERE 컬럼 = ?");
    
    $params = array($변수);
    
    odbc_execute($stmt, $params);
    
    


    SQL Injection 공격을 방지하기 위해 다음 설정이나 코드를 추가해야 합니다.

    1. 오라클 데이터베이스의 경우: 오라클 데이터베이스의 경우, SQL Injection 공격을 방지하기 위해 'SQLNET.AUTHENTICATION_SERVICES' 파라미터를 설정해야 합니다. 예를 들어, 다음과 같이 설정할 수 있습니다.

    #hostingforum.kr
    php
    
    sqlnet.ora = (SQLNET.AUTHENTICATION_SERVICES = (NTS))
    
    


    2. DB2 데이터베이스의 경우: DB2 데이터베이스의 경우, SQL Injection 공격을 방지하기 위해 'DB2_COMPATIBILITY_VECTOR' 파라미터를 설정해야 합니다. 예를 들어, 다음과 같이 설정할 수 있습니다.

    #hostingforum.kr
    php
    
    DB2_COMPATIBILITY_VECTOR = 0x0000
    
    


    3. MySQL 데이터베이스의 경우: MySQL 데이터베이스의 경우, SQL Injection 공격을 방지하기 위해 'mysql_real_escape_string' 함수를 사용해야 합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $sql = "SELECT * FROM 테이블 WHERE 컬럼 = '" . mysql_real_escape_string($변수) . "'";
    
    


    4. PHP의 경우: PHP의 경우, SQL Injection 공격을 방지하기 위해 'PDO' 또는 'mysqli' 확장 모듈을 사용해야 합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $conn = new PDO('odbc:DRIVER={ODBC Driver};SERVER=서버;DATABASE=데이터베이스', '', '');
    
    $stmt = $conn->prepare("SELECT * FROM 테이블 WHERE 컬럼 = ?");
    
    $stmt->execute(array($변수));
    
    

    2025-06-07 19:42

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

검색

게시물 검색