우리는 고전적인 ASP 검색 엔진을 SQL 주입으로부터 보호하기 위해 업데이트하려고합니다. 다양한 검색 매개 변수를 기반으로 쿼리를 연결하여 동적으로 쿼리를 작성하는 VB 6 기능이 있습니다. 키워드를 제외한 모든 매개 변수에 대해 동적 SQL을 사용하는 저장 프로 시저로 변환했습니다.동적 SQL - 검색 쿼리 - 변수 키워드 수
키워드의 문제점은 사용자가 제공 한 가변 숫자 단어가 있고 각 키워드에 대해 여러 열을 검색하려고한다는 것입니다. 각 키워드에 대해 별도의 매개 변수를 만들 수 없으므로 어떻게 안전한 쿼리를 작성할 수 있습니까?
예 :
@CustomerId AS INT
@Keywords AS NVARCHAR(MAX)
@sql = 'SELECT event_name FROM calendar WHERE customer_id = @CustomerId '
--(loop through each keyword passed in and concatenate)
@sql = @sql + 'AND (event_name LIKE ''%' + @Keywords + '%'' OR event_details LIKE ''%' + @Keywords + '%'')'
EXEC sp_executesql @sql N'@CustomerId INT, @CustomerId = @CustomerId
SQL 주입에서이 및 유지 보호를 처리하는 가장 좋은 방법은 무엇입니까?
한이 방법은 탈출 문제를 완전히 방지 할 수 –