보안 #SQL Injection1 SQL Injection 방어 (바인딩 쿼리) SQL Injection 방어 쿼리바인딩 과정 ( 파싱 과정을 1번만 거친다는 의미) 파싱 -> 바인드 -> 실행 -> 패치 (꺼내옴) 변수의 자리에 '?' 등을 사용, 바인딩 데이터는 SQL문법이 아닌 내부의 인터프리터나 컴파일 언어로 처리하기 때문에 문법적인 의미를 가질 수 없다. 따라서 바인딩 변수에 SQL공격 쿼리를 입력할지라도 의미있는 쿼리로 동작하지 않는 이유이다. Prepared Statement 사용시 쿼리 동작 방식 1. 파싱 (메모리에 올라감) select 나이 from user where id = ? (물음표라는 바인딩 변수 사용) 만약 Prepared Statement 사용 시 이 과정을 1번만 진행 함 그니까, 이미 메모리에 올라가서 인간이 이해 가능한 있는 공격 문자열을 Inje.. 2023. 3. 17. 이전 1 다음 반응형