> 데이터 베이스 > MySQL 튜토리얼 > SQL 주입을 방지하기 위해 SQL LIKE 문과 함께 매개변수를 안전하게 사용하려면 어떻게 해야 합니까?

SQL 주입을 방지하기 위해 SQL LIKE 문과 함께 매개변수를 안전하게 사용하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-31 18:03:11
원래의
850명이 탐색했습니다.

How Can I Safely Use Parameters with SQL LIKE Statements to Prevent SQL Injection?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿