저는 동료들과 여기에서 SQL 쿼리, 특히 .NET 응용 프로그램에서 매개 변수를 사용하는 장점에 대해 설교했습니다. SQL 인젝션 공격에 대한 내성을 제공한다고 약속하기까지했습니다.
하지만 이것이 정말 사실인지 궁금해지기 시작했습니다. 매개 변수화 된 쿼리에 대해 성공할 알려진 SQL 주입 공격이 있습니까? 예를 들어 서버에서 버퍼 오버플로를 일으키는 문자열을 보낼 수 있습니까?
물론 웹 응용 프로그램이 안전한지 확인하기 위해 고려해야 할 다른 사항이 있습니다 (사용자 입력 및 모든 항목 삭제 등). 이제 SQL 주입을 생각하고 있습니다. 저는 MsSQL 2005 및 2008이 제 기본 데이터베이스이기 때문에 특히 관심이 있지만 모든 데이터베이스가 흥미 롭습니다.
편집 : 매개 변수 및 매개 변수화 된 쿼리가 의미하는 바를 명확히하기 위해. 매개 변수를 사용한다는 것은 문자열에 SQL 쿼리를 작성하는 대신 "변수"를 사용하는 것을 의미합니다.
따라서 이렇게하는 대신 :
SELECT * FROM Table WHERE Name = 'a name'
우리는 이것을합니다 :
SELECT * FROM Table WHERE Name = @Name
그런 다음 쿼리 / 명령 개체에서 @Name 매개 변수의 값을 설정합니다.