오늘은 보안에 관련한 지식을 가져와 보았다.
먼저 SQL Injection이다.
SQL Injection 공격은 웹해킹에서 가장 많이 쓰이는 공격 방법 중 하나이다.
한 줄로 설명하자면 SQL문을 조작하여 원하는 결과를 얻어내는 방식이다.
예를 들어서 설명하자면
보통 우리가 로그인 할 때 쓰는 입력창은 SQL문을 서버로 전송해 DB를 통해 값을 얻어올 것이다.
아래는 이해를 돕기위한 SQL 문이다.
필요한 입력 값은 ppusda, 1234이다.
SELECT * from table where id = "ppusda" and pw = "1234";
만약 로그인을 하기 위해서는 각 입력창에는 다음과 같이 ppusda와 1234를 입력해야만 한다.
정상적인 값을 넣지않으면 당연히 로그인이 되지 않을 것이다.
하지만 이런 입력창에 우리가 SQL문을 넣게 된다면 결과는 어떻게 될까?
SELECT * from table where id = "ppusda" and pw = '' or 1=1; -- ';
이번 입력창에는 ppusda, 'or 1=1; -- 라는 값을 넣었다.
ppusda 는 올바른 값이고 pw는 올바른 값이 아니지만 SQL문을 바꿔버리고 만 것이다.
or 1=1을 통해 결과를 참으로 만들어 버리고 -- 을 통해 뒤에 올 값을 주석처리 시킨 문장이 되어버렸다.
그로인해 로그인이 될 것이다.
이처럼 SQL 문을 통해 공격하는 것을 SQL Injection 공격이라고 한다.
내일은 SQL Injection 공격과 비슷한 Blind SQL Injection 공격에 대해 알아볼 것이다.
'오늘의 공부 > 보안' 카테고리의 다른 글
[보안] Blind SQL Injection (0) | 2022.03.19 |
---|