본문 바로가기
.Net-VB.Net

SQL 주입 공격 – VB.Net 데이터베이스 응용 프로그램을 방지하는 방법

by 코딩하는 욤욤이 2024. 1. 24.
반응형


SQL 주입이란 무엇입니까?
SQL 인젝션은 실행을 위해 입력 필드에 악성 SQL 문을 삽입하는 데이터 기반 애플리케이션을 공격하는 데 사용되는 코드 인젝션 기술입니다.

이 VB.Net 튜토리얼은 매개변수화된 SQL 쿼리의 사용 방법을 안내하고 이를 사용하여 애플리케이션 사용자의 SQL 주입 공격을 방지하는 방법을 보여줍니다.

SQL 주입 공격 - VB.Net 데이터베이스 애플리케이션을 방지하는 방법

이제 매개변수화된 SQL 쿼리가 무엇인지에 대한 질문이 떠오릅니다. 나중에 이 튜토리얼에서 이에 대해 논의할 것입니다.

작은 예를 들어보겠습니다. 데이터베이스에 일부 레코드를 삽입하는 방법을 알고 있듯이 다음 쿼리를 사용합니다.

Insert into Table_Name Values(‘” & textbox1.text & “‘,'” & textbox2.text & “‘,'” & textbox3.text & “‘)


이제 위 코드의 문제는 사용자가 SQL 주입을 사용하여 런타임에 쿼리를 수정할 수 있다는 것입니다.

SQL 인젝션 공격 예시


소규모 SQL 주입 공격의 예를 들어 보겠습니다. 위의 쿼리를 잊어버리고 쿼리가 다음과 같다고 가정합니다.

Select * from Table_Name Where Username='” & TextBox1.Text & “‘

이제 사용자가 TextBox1에 x' OR 'x=x'를 입력하면 위 쿼리가 참값을 반환하도록 할 수 있으며 결과는 문자 x로 시작하는 모든 레코드를 표시하게 됩니다.

SQL 주입 공격을 방지하는 방법


위의 문제를 피하기 위해 매개변수화된 SQL 쿼리를 사용합니다. 이제 매개변수화된 쿼리의 예를 살펴보겠습니다. 매우 간단합니다. 값 대신 매개변수만 추가하면 됩니다.

Table_Name 값(@username,@password)에 삽입

매개변수는 항상 @ 기호로 시작됩니다. 이제 다음과 같은 방법으로 이러한 매개변수에 값을 할당해야 합니다.

구문: SQLCommand.AddParam(“ParameterName”, value)
예: SQLCommand.AddParam(“@username”,TextBox1.text)

이 방법을 사용하면 SQL 주입 공격을 쉽게 피할 수 있습니다.

반응형