php

    SQL Injection - 방어 실습(2), Prepared Statement

    SQL Injection - 방어 실습(2), Prepared Statement

    Prepared statement(준비된 쿼리, statement) 방식의 DB 쿼리는 원래 동일한 쿼리를 여러 번 반복 실행할 때 성능을 향상시키기 위해 개발되었다. 쿼리에서 데이터가 들어가는 부분을 다 빼놓고 문법만 분석하여 DB서버가 쿼리 계획을 세우고 최적화할 기회를 주고 나서, 최적화된 쿼리에 데이터를 집어넣어 빠르게 반복 실행하려는 목적이었다. 그런데 여기에 성능보다 더 중요한 보안상의 장점이 있다는 사실이 밝혀지면서 이제는 성능보다 보안 때문에 prepared statement를 사용하는 개발자들이 많다. 보안에 도움이 되는 이유는 데이터를 빼고 쿼리 문법만 먼저 분석하는 단계를 거치기 때문이다. 사용자가 입력한 데이터에 위험한 내용이 들어 있더라도, 쿼리 문법을 분석하는 단계에는 그 데이터..