주입에 대한 방지를 위해 매개 변수화 된 쿼리를 사용하는 코드가 있지만 테이블 구조에 관계없이 쿼리를 동적으로 생성 할 수 있어야합니다. 이 작업을 수행하는 적절한 방법은 무엇입니까?매개 변수화 된 SQL 열?
예를 들어 이름, 주소, 전화 열이있는 테이블이 있다고 가정 해 보겠습니다. 열 표시을 실행하고 옵션으로 선택 드롭 다운을 채우는 웹 페이지가 있습니다.
다음으로 검색이라는 텍스트 상자가 있습니다. 이 텍스트 상자는 매개 변수로 사용됩니다.
현재 내 코드는 다음과 같은 :
result = pquery('SELECT * FROM contacts WHERE `' + escape(column) + '`=?', search);나는 비록에서 구역질 느낌을 얻을. 매개 변수화 된 쿼리를 사용하는 이유는 이스케이프을 사용하지 않기 위해서입니다. 또한 이스케이프은 이스케이프 열 이름 용으로 설계되지 않았을 가능성이 큽니다.
내가 의도 한대로 작동하는지 어떻게 확인할 수 있습니까?
편집 : 나는 동적 쿼리를 요구하는 이유는 스키마는 사용자가 구성 할 수 있다는 것입니다, 나는 하드 코딩 아무것도를 해결하기 위해 주변되지 않습니다.
하드 코딩은 나를위한 선택 사항이 아니므로, 제안 해 주셔서 감사합니다! – Martin
요점은 열 이름을 하드 코드하지 않고 인터페이스에서 전달하지 않는 것입니다. 열 목록을 동적으로 가져올 수 있지만 위의 동일한 솔루션을 계속 사용하십시오. 전달 된 데이터의 일부를 열 이름으로 만들지 마십시오. SQL 삽입으로부터 보호됩니다. – zigdon
+1 예, 저는 다음과 같이 말합니다. 사용자가 데이터를 입력 할 수는 있지만 사용자가 코드를 제공 할 수는 없습니다. –