"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > SQL 주입에 대한 단일 따옴표를 피하는 것이 신뢰할 수있는 방어입니까?

SQL 주입에 대한 단일 따옴표를 피하는 것이 신뢰할 수있는 방어입니까?

2025-03-23에 게시되었습니다
검색:482

Is Escaping Single Quotes a Reliable Defense Against SQL Injection?

SQL 주입 보호 : 단일 따옴표의 오류 탈출

소프트웨어 개발 분야에서 SQL 주입 공격을 방지하는 것이 중요합니다. 매개 변수화 된 SQL 쿼리는 입력을 정리하는 가장 좋은 방법이지만 일부 개발자는 여전히 단일 따옴표를 피하고 단일 따옴표로 사용자 입력을 대안으로 동봉하는 방어 메커니즘을 사용합니다.

결함이있는 탈출 기술

이 메소드는 사용자 입력의 단일 따옴표를 이중 단일 견적으로 대체하고 전체 문자열을 단일 따옴표로 둘러싸는 것과 관련이 있습니다.

sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'"

이 기술의 원리는 문자열이 종료되는 것을 방지하기 위해 사용자가 입력 한 단일 인용문이 효과적으로 중화된다는 것입니다. 따라서 세미콜론 또는 백분율 부호와 같은 다른 캐릭터는 문자열의 일부가되며 명령으로 실행되지 않습니다.

주입 취약성

]

그러나이 기술은 사용자 입력 자체에 이중 단일 견적을 포함 할 수있는 경우를 처리 할 수 ​​없습니다. 이 경우 문자열이 종료되고 나머지 입력은 SQL 명령으로 실행될 수 있습니다.

예제 입력

이를 설명하려면 다음 사용자 입력을 고려하십시오.

'SensitiveData' HAVING AMOUNT>2000 OR ''=''

실행 후 코드는 다음과 같습니다.

SELECT * FROM ACCOUNT WHERE NAME='SensitiveData' HAVING AMOUNT>2000 OR ''=''
를 선택하십시오.

이 입력은 예상 정리를 우회하여 SQL 쿼리에 또는 조항을 성공적으로 주입합니다.

추가 고려 사항

이 탈출 기법에는 다음을 포함하여 다른 취약점이 있다는 점에 유의해야합니다.

  • 주석을 사용한 공격 또는 기타 명령문 터미네이터와 같은 모든 유형의 SQL 주입 공격을 방어 할 수는 없습니다.
  • 성능 및 유지 보수 오버 헤드를 소개합니다.
  • 코드를 읽고 이해하기 어렵게 만듭니다.

모범 사례

임시 입력 청소 기술에 의존하지 않으며, 이러한 모범 사례를 따라 SQL 주입을 방지하십시오 :

  • 매개 변수화 된 SQL 쿼리 또는 JDBC 사전 준비 문을 사용하십시오.
  • 예상 입력 값과 형식 (화이트리스트) 만 허용됩니다.
  • 블랙리스트는 절대적으로 필요한 경우에만 사용되며 다른 완화 조치가 구현됩니다.
  • 동적 SQL과 문자열 연결을 피하십시오.
  • 데이터베이스 권한이 제한된 저장된 절차를 고려하십시오.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3