보안 SQL 주입이란 무엇입니까? -techopedia에서 정의

SQL 주입이란 무엇입니까? -techopedia에서 정의

차례:

Anonim

정의-SQL 주입이란 무엇입니까?

SQL 삽입은 악의적 인 코드가 잘못 디자인 된 응용 프로그램에 포함되어 백엔드 데이터베이스로 전달되는 컴퓨터 공격입니다. 그런 다음 악성 데이터는 절대로 실행해서는 안되는 데이터베이스 쿼리 결과 또는 작업을 생성합니다.

Techopedia는 SQL 주입을 설명합니다

SQL 인젝션 공격의 예를 살펴 보겠습니다 :


은행 운영을 실행하는 애플리케이션에는 고객의 주민등록번호와 같은 데이터 포인트를 사용하여 고객 세부 사항을 검색하는 데 사용할 수있는 메뉴가 있습니다. 백그라운드에서 애플리케이션은 다음과 같이 입력 한 검색 값을 전달하여 데이터베이스에서 실행되는 SQL 쿼리를 호출합니다.


client_name, 전화, 주소, 날짜 _ 생년월일을 선택하십시오. social_sec_no = 23425


이 샘플 스크립트에서 사용자는 애플리케이션 메뉴 창에 23425 값을 입력하여 사회 보장 번호를 입력하도록 요청합니다. 그런 다음 사용자가 제공 한 값을 사용하여 데이터베이스에서 SQL 쿼리가 실행됩니다.


SQL 지식이있는 사용자는 애플리케이션을 이해하고 사회 보장 번호를 요청할 때 단일 값을 입력하는 대신 문자열 "23425 또는 1 = 1"을 입력하면 다음과 같이 데이터베이스에 전달됩니다.


client_name, 전화, 주소, date_of_birth를 선택하십시오. social_sec_no = 23425 또는 1 = 1


WHERE 절은 취약점을 유발하므로 중요합니다. 데이터베이스에서 조건 1 = 1은 항상 true이며 클라이언트 사회 보장 번호 세부 사항 (23425) 또는 WHERE 1 = 1을 리턴하도록 조회가 지정되었으므로 조회는 테이블의 모든 행을 리턴합니다. 원래 의도.


위의 SQL 주입 공격 예제는 간단하지만, 취약점을 악용하여 애플리케이션이 백엔드 데이터베이스 쿼리 또는 명령을 실행하도록 속이는 방법을 보여줍니다.


특히 데이터베이스 쿼리 나 명령을 실행하기 위해 사용자 입력이 필요한 모듈에서 적절한 응용 프로그램 디자인을 보장함으로써 SQL 주입 공격을 완화 할 수 있습니다. 위의 예에서 하나의 숫자 값만 허용하도록 응용 프로그램을 변경할 수 있습니다.

SQL 주입이란 무엇입니까? -techopedia에서 정의