Prepared statement은 템플릿 형식을 기반으로 매 실행 시마다 특정한 상숫값(Constant Value)으로 치환되어 데이터베이스 문을 실행시키도록 돕습니다. Database에서는 Prepared Statement를 Parser, Optimizer, Executor 과정으로 안전하게 실행시킵니다.
Parser 가장 먼저 Parser는 DB 쿼리를 의미론적으로 해석합니다. 컴파일러에서 동작하는 방식과 동일하게 SQL 명령문은 Syntax Tree 구조로 변경되고, 이 때 각 DB의 문법이 사용됩니다.
아래 구문을 보면, ?는 WHERE 절 뒤의 에서 등호(=) 앞이나 뒤에 있는 로 파싱됩니다.
Syntex Tree SQL 인젝션(SQLi) 공격은 주로 구문 구조가 변경되면서 발생하는데, Prepared Statement를 사용하면 이 문제가 해결됩니다. Prepared Statement에서는 값이 어떤 형태든 구문의 구조가 변경되지 않으며, 입력 값은...
#
preparedStatement
#
security
#
sqli
#
보안