집 >데이터 베이스 >MySQL 튜토리얼 >호스팅된 환경에서 단일 실행 쿼리에 대해 준비된 문을 피해야 합니까?
Prepared 문을 피해야 하는 경우
SQL 주입 공격을 방지하는 일반적인 방법은 준비된 문을 사용하는 것입니다. 그러나 준비된 문이 가장 적합한 옵션이 아닐 수도 있는 경우가 있습니다.
이 특정 사례에서 개발자는 SELECT foo,bar FROM baz WHERE quux와 같은 기본 쿼리를 사용하는 웹 애플리케이션을 다시 엔지니어링하고 있습니다. = ? ORDER BY bar LIMIT 1. 이 쿼리는 페이지 조회당 한 번만 실행됩니다. 또한 개발자는 호스팅된 환경에 있으며 추가 서버 로드를 피하는 것을 선호합니다.
이러한 고려 사항을 고려할 때 개발자는 준비된 문을 사용해야 하는지 질문합니다.
답변
Prepared 문을 피해야 하는지 결정하려면 준비된 문이 두 가지 주요 기능을 제공한다는 점을 고려해야 합니다. 이점:
이 특정 시나리오에서는 각 쿼리가 페이지 히트당 한 번만 실행되므로 개발자는 쿼리 재사용에 대해 걱정하지 않습니다. 따라서 쿼리 재사용에 따른 성능상의 이점은 무시할 수 있습니다.
그러나 주입 방지 측면은 여전히 문제로 남아 있습니다. 이 문제를 해결하기 위해 개발자는 에뮬레이트된 준비된 문을 사용하는 것을 고려할 수 있습니다. 이러한 명령문은 PHP 함수를 사용하여 인용 및 매개변수 대체를 처리하고 여러 데이터베이스 왕복에 따른 오버헤드 없이 SQL 주입에 대한 보호를 제공합니다.
권장사항
정보를 바탕으로 제공된 경우 준비된 문을 사용하지 않고 대신 에뮬레이트된 준비된 문을 선택하는 것이 좋습니다. 이 접근 방식은 실제 준비된 명령문에서 발생할 수 있는 추가 데이터베이스 왕복을 피하면서 SQL 주입으로부터 보호합니다.
위 내용은 호스팅된 환경에서 단일 실행 쿼리에 대해 준비된 문을 피해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!