SQL LIKE 문에서 매개변수 사용
검색 기능을 생성할 때 SQL 주입 위협으로부터 보호하기 위해 매개변수를 사용하는 것이 필수적입니다. 그러나 LIKE 문에 매개변수를 사용하면 다음 쿼리에서 알 수 있듯이 문제가 발생할 수 있습니다.
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
이 쿼리는 매개변수가 제대로 삭제되지 않았기 때문에 SQL 삽입에 취약합니다. 이 문제를 해결하려면 다음과 같은 값을 사용하여 매개변수를 올바르게 정의하고 할당해야 합니다.
Dim cmd as New SqlCommand( "SELECT * FROM compliance_corner"_ + " WHERE (body LIKE @query )"_ + " OR (title LIKE @query)") cmd.Parameters.Add("@query", "%" +searchString +"%")
이 예에서 @query 매개변수는 searchString 값을 사용하여 정의됩니다. 이렇게 하면 사용자 입력인 searchString이 적절하게 삭제되고 쿼리가 SQL 삽입으로부터 보호됩니다.
또한 쿼리가 SQL Server에서 직접 실행될 때 결과를 반환한다는 점에 주목할 필요가 있습니다.
SELECT * FROM compliance_corner WHERE (body LIKE '%max%') OR (title LIKE '%max%')
매개변수 없이 쿼리가 실행되는데, LIKE 문이 %max% 문자열을 본문 및 제목 열의 내용과 직접 비교하기 때문입니다. 그러나 매개변수를 사용하여 실행하면 LIKE 문이 매개변수 값 @query를 적절하게 삭제된 열의 내용과 비교하여 일치 항목이 반환되지 않습니다.
위 내용은 SQL 주입을 방지하기 위해 SQL LIKE 문과 함께 매개변수를 안전하게 사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!