klaus

[Week-2] 로그인 인증/식별 본문

수업/모의해킹

[Week-2] 로그인 인증/식별

klus! 2022. 10. 21. 21:59

0. 서론

이번주부터는 수업시간에 배운 내용을 살짝 정리하고 해당 내용을 복습할 때 한번 읽어보려고 합니다.

중간에 갑자기 생각이 안나고 그럴 때가 많은 것 같아 정리가 필요할 것 같습니다.

 

1. 단어정리

SQL injection : 단어 그대로 정상적인 SQL문에 악의적인 SQL문을 삽입하여 DB를 비정상적으로 조작하는 공격 방법

쿠키 : 웹사이트 방문했을 때 만들어지는 파일(정보 = 방문기록 비밀번호 등), 클라이언트 측에 저장됨

세션 : 서버에 저장되는 정보

세션ID : 쿠키에 저장되는 세션 식별 정보를 가진 ID

식별(Identification) : 해당 사용자의 계정정보를 DB에서 찾아내는 것(ID,사번 등), Promary key, 보호 X

인증(Authentication) : 식별된 DB의 정보를 사용자 정보와 비교하는 행위 (PW, OTP 등), 식별에 사용되는 정보

hash: 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수로 일방향성을 가지는 함수입니다.

암호화를 하면 복호화가 불가능하다는 개념으로 주요 알고리즘은 MD5,SHA시리즈 등이 있습니다.

 

2. SQL쿼리를 통해 식별/인증하는 5가지 유형

 

1. 식별/인증을 동시에 처리하는 유형

SQL문을 작성시 식별과 인증을  AND로 사용하여 검색

더보기

SELECT * FROM [테이블명] WHERE id = '$username' AND pass = '$pass';

쿼리문을 실행했을 때 결과값이 존재하면 로그인 성공 아니면 로그인 실패로 나오는 형태

(== 해당 방법은 매우 취약한 로그인 인증방식)

 

 

2. 식별/인증 분리하여 처리하는 유형

로그인 페이지에서 입력받은 id,PW값을 각각 변수 값에 저장하고 아래 쿼리문을 실행하여 실행 결과의 비밀번호와 유저값이 일치하는지 확인한 후 같으면 로그인 성공 아니면 로그인 실패로 나오는 형태

더보기

SELECT pass FROM [테이블명] WHERE id = '$username';

sql1.execute

if(pass == res.pass) ## 입력받은 PW와  DB값이 같으면 로그인 성공

 

else:    ##다르면 로그인 실패 

 

3.식별/인증을 동시에 처리하는 유형(with. hash)

 

pass부분을 hash 알고리즘을 통해 변경하여 쿼리문을 전달하고 로그인함.

더보기

SELECT * FROM [테이블명] WHERE id = '$username' AND pass = hash('$pass');

4. 식별/인증 분리하여 처리하는 유형(with. hash)

더보기

SELECT pass FROM [테이블명] WHERE id = '$username';

sql1.execute

if(hash(pass) == res.pass) ## 입력받은 PW와  DB값이 같으면 로그인 성공

 

else:    ##다르면 로그인 실패 

5. 식별/인증 분리하여 처리하는 유형(with.개행(\n))

해당 방법을 통해 작성된 쿼리문은 주석을 사용하지 못함 

더보기

SELECT * FROM [테이블명] WHERE id = '$username' AND \n pass = '$pass';

 

금일은 2주차 수업을 정리해보았습니다.

다음 회차에서는 각 로그인 페이지를 만들어보고 해당 페이지를 우회하는 방법에 대해 확인해보겠습니다.

Comments