소프트웨어 개발 분야에서 SQL 주입 공격을 방지하는 것이 중요합니다. 매개 변수화 된 SQL 쿼리는 입력을 정리하는 가장 좋은 방법이지만 일부 개발자는 여전히 단일 따옴표를 피하고 단일 따옴표로 사용자 입력을 대안으로 동봉하는 방어 메커니즘을 사용합니다.
결함이있는 탈출 기술
이 메소드는 사용자 입력의 단일 따옴표를 이중 단일 견적으로 대체하고 전체 문자열을 단일 따옴표로 둘러싸는 것과 관련이 있습니다.
sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'"
이 기술의 원리는 문자열이 종료되는 것을 방지하기 위해 사용자가 입력 한 단일 인용문이 효과적으로 중화된다는 것입니다. 따라서 세미콜론 또는 백분율 부호와 같은 다른 캐릭터는 문자열의 일부가되며 명령으로 실행되지 않습니다.
주입 취약성
]그러나이 기술은 사용자 입력 자체에 이중 단일 견적을 포함 할 수있는 경우를 처리 할 수 없습니다. 이 경우 문자열이 종료되고 나머지 입력은 SQL 명령으로 실행될 수 있습니다.
예제 입력
이를 설명하려면 다음 사용자 입력을 고려하십시오.
'SensitiveData' HAVING AMOUNT>2000 OR ''=''
실행 후 코드는 다음과 같습니다.
SELECT * FROM ACCOUNT WHERE NAME='SensitiveData' HAVING AMOUNT>2000 OR ''=''
를 선택하십시오.
이 입력은 예상 정리를 우회하여 SQL 쿼리에 또는 조항을 성공적으로 주입합니다.
추가 고려 사항
이 탈출 기법에는 다음을 포함하여 다른 취약점이 있다는 점에 유의해야합니다.
모범 사례
임시 입력 청소 기술에 의존하지 않으며, 이러한 모범 사례를 따라 SQL 주입을 방지하십시오 :
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3