해결된 질문
작성
·
28
0
안녕하세요 강사님
Client Side PreparedStatement 는 어떻게 SQL Injection을 막을 수 있다는게
? 에 set하기전에 application에서 체크해서 막는다는의미인가요?
답변 2
0
도현님, 안녕하세요.
Client side preparedstatement에서도, 바이딩되는 값에 대해서 따옴표나 특수 문자들에 대해서 필요한경우, 자동으로 Escape 처리를 해주기 때문에 SQL Injection을 막을 수 있다는 의미입니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
dohyun_lim님께서 질문하신 “SQL Injection”과 “Client Side PreparedStatement”에 대한 이해를 함께 돕기 위해 간단히 설명드릴게요.
SQL Injection은 사용자가 입력한 데이터를 직접 SQL 쿼리에 삽입할 때, 악의적인 쿼리가 실행되어 데이터베이스 보안이 침해될 수 있는 공격 방법입니다. Prepared Statement는 이러한 SQL Injection을 방지하는 데 유리합니다. 그 이유는 SQL 쿼리를 먼저 컴파일하고 나중에 파라미터를 바인딩하기 때문에, 파라미터로 전달되는 값이 쿼리의 의도를 변경하지 않기 때문입니다.
Client Side PreparedStatement의 경우, 클라이언트 측에서 쿼리의 파라미터를 처리하고 서버로 전송합니다. 여기서 “SQL Injection을 막을 수 있다”는 의미는 파라미터를 미리 컴파일된 SQL 쿼리 내에 직접 삽입하지 않기 때문에, 파라미터에 대한 입력 검증이 철저히 수행될 수 있다는 것입니다. 즉, 파라미터로 전달된 값이 올바르게 처리되어 쿼리 문자열 자체를 변경하지 않도록 해줍니다.
이에 대해 상세한 설명은 아래 링크에서 확인하실 수 있습니다:
위 답변들에서 Prepared Statement의 특징과 MySQL에서의 효율성에 대한 논의가 이루어지고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.